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 # 完全删除映射到本地的数据
评论区