侧边栏壁纸
博主头像
琉璃红梅 博主等级

琉璃世界,白雪红梅。

  • 累计撰写 44 篇文章
  • 累计创建 90 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Docker系列-Nginx Proxy Manager的搭建与使用

雪穗
2023-12-15 / 0 评论 / 0 点赞 / 57 阅读 / 0 字
温馨提示:
本文最后更新于40天前,若内容或图片失效,请留言反馈。 若部分素材不小心影响到您的利益,请联系我删除。

1.Nginx Proxy Manager简介

这个项目是一个预构建的Docker镜像,可以让您轻松地将您在家中或其他地方运行的网站进行转发,包括免费的SSL,而无需过多了解Nginx或Letsencrypt。

Nginx Proxy Manager的官网地址:https://nginxproxymanager.com/

2.Nginx Proxy Manager的安装

安装前提:

1.已经安装好docker和docker compose,请参看我的博文 docker系列-docker与docker compose安装

安装建议:

1.将所有docker项目放在统一目录 /root/data/docker_data/ 下,方面后期管理与维护

2.1 添加 SWAP 虚拟内存

注意:VPS 的内存如果过小,建议设置一下 SWAP,一般为内存的 1-1.5 倍即可,可以让系统运行更流畅!

执行如下命令:

wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh

选择 18,然后输入你想要扩容的数值即可。

2.2 创建安装目录

mkdir -p /root/data/docker_data/npm

2.3 创建docker-compose.yaml文件并上传至服务器

上传docker-compose.yaml文件到npm目录下,docker-compose.yaml文件内容如下:

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'   # 保持默认即可,不建议修改左侧的80
      - '81:81'   # 冒号左边可以改成自己服务器未被占用的端口
      - '443:443' # 保持默认即可,不建议修改左侧的443
    volumes:
      - ./data:/data                    # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中
      - ./letsencrypt:/etc/letsencrypt  # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中,ssl证书的存放地址

2.4 Nginx Proxy Manager的部署

执行如下命令查看端口是否被占用

lsof -i:80
lsof -i:81
lsof -i:443

如果没有输出则未被占用,如果被占用则需要修改左边的81端口号,如果提示

-bash: lsof: command not found

说明lsof未安装,可以先安装

apt install lsof  

然后进入docker-compose.yaml文件所在的目录,并部署运行

cd /root/data/docker_data/npm

docker compose up -d

服务器的ip地址查询

curl ip.sb

之后就可以通过 http://ip:81 进行访问了,如果不能访问,一般是由于防火墙未关闭,需要到服务器的后台放行相应端口。

3.服务器放行端口

这里以我从UCloud购买的服务器为例进行演示,其他服务商大同小异。

1.先去运营商官网登录服务器的后台

2.找到安全规则

3.为防火墙添加规则

4.在端口哪里填入需要放行的端口号,来源ip为0.0.0.0即所有ip均可访问,然后确认即可

4.Nginx Proxy Manager的基本使用

访问http://ip:81, 默认的登录名和密码为:

Email:    admin@example.com
Password: changeme

登陆之后及时修改邮箱地址和密码,之后就可以使用了

设置反向代理

域名填写DNS解析的域名,ip地址为服务器ip,或者容器内部ip即 172.17.0.1

ip addr show docker0  # 查看容器内部ip

3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:11:44:ea:68 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fd00:dead:beef:c0::1/80 scope global tentative 
       valid_lft forever preferred_lft forever
    inet6 fe80::1/64 scope link tentative 
       valid_lft forever preferred_lft forever
Domain Names:a.example.com     # 改为你自己的域名
Forword Hostname/IP:127.0.0.1  # 改为你自己的服务器ip
Forward Port:81                # 该服务的对外访问端口

这样只能通过http访问,要想https访问,需要申请ssl证书,操作如下,填写的邮箱用于校验

ssl证书是绑定域名的与ip无关

ssl证书的存放地址:/root/data/docker_data/npm/letsencrypt/live

SSL Certificate:Request a new SSL Certificate
Email Address for Let's Encrypt: 123456@qq.com    # 改为你自己的邮箱

可能会出现的一些问题如下:
1.Internal Error
这通常是DNS域名解析的问题,可以ping一下域名看是否能够ping通

ping a.example.com

5.Nginx Proxy Manager的升级与更新

cd /root/data/docker_data/npm

docker-compose down                                                  #停止容器运行,并删除已停止的容器以及已创建的所有网络

cp -r /root/data/docker_data/npm /root/data/docker_data/npm.archive  # 万事先备份,以防万一(可选)

docker-compose pull                                                  #重新拉取镜像,需要适当修改docker-compose.yaml文件内容

docker-compose up -d                                                 # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

docker image prune                                                   # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像

提示

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y

6.Nginx Proxy Manager的卸载

cd /root/data/docker_data/npm

docker compose down --rmi all      #停止容器并且删除下载的镜像

rm -rf /root/data/docker_data/npm  # 完全删除映射到本地的数据

7.参考

🌌一个反向代理神器 ——Nginx Proxy Manager

0

评论区