Nginx作为一个功能十分强大的反向代理工具,安装和配置较为复杂,尤其是对多个网站的反代、分流使用更加不友好。Nginx Proxy Manager一个可视化的Nginx服务工具。通过网页端完成反向代理的设置和SSL证书的部署,能够简化大部分的代理操作。 官网:https://nginxproxymanager.com
安装准备
系统:ubuntu 20.4
工具:docker和docker-compose
安装 Docker 环境
安装 Docker(非大陆服务器)
wget -qO- get.docker.com | bash
systemctl enable docker # 设置开机自动启动
安装 Docker-compose(非大陆服务器)
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
安装 Docker(国内服务器)
curl -sSL https://get.daocloud.io/docker | sh
systemctl enable docker # 设置开机自动启动
安装 Docker-compose(国内服务器)
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.1.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
搭建
创建数据存放位置
mkdir -p /root/npm
cd /root/npm
新建 docker-compose.yml
编辑docker-compose.yml
version: '3'
services:
app:
image: 'chishin/nginx-proxy-manager-zh:latest'
restart: unless-stopped
ports:
- '80:80' # 冒号左边可以改成自己服务器未被占用的端口
- '81:81' # 冒号左边可以改成自己服务器未被占用的端口
- '443:443' # 冒号左边可以改成自己服务器未被占用的端口
volumes:
- ./data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 data 文件夹中
- ./letsencrypt:/etc/letsencrypt # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 letsencrypt 文件夹中
docker-compose up -d
理论上我们就可以输入 http://ip:81 访问了。
默认登陆名和密码:
Email: admin@example.com
Password: changeme
然后创建管理用户和密码
使用
添加代理前需要先把域名解析到服务器,测试成功后再继续(DNS服务商变更比较慢)。防止后面DNS解析不成功,申请证书失败。
进入代理服务-添加代理服务
填入已经解析好的域名,和你想代理的IP地址和端口
使用下面的方案为当前域名申请一个Let's Encrypt的免费证书,会自动帮你续期。
其他
通用域名、泛域名证书的申请
在每次使用域名时,都会申请一次证书比较麻烦。NPM也支持通用域名/泛域名证书的申请,这样同一个顶级域名下的所有域名都可以使用同一个证书,下面以Cloudflare为例。
注意:一些域名是无法成功申请到Cloudflare令牌的。
现在Cloudflare的API已经针对.cf,.ga,.gq,.ml和.tk这几个顶级域名收取费用,更新证书的时候会提示“You cannot use this API for domains with a .cf, .ga, .gq, .ml, or .tk TLD (top-level domain). To configure the DNS settings for this domain, use the Cloudflare Dashboard.”,暂时可通过申请其他付费域名来避免该问题。
获取API令牌
进入域名管理,右侧找到获取你的API令牌
->创建令牌
->编辑区域DNS
->使用模板
令牌名称
->特定区域 或 所有区域
->域名
->继续以显示摘要
->创建令牌
->令牌API
(只显示一次,一定要记录好)
申请证书
获取API令牌后,打开Nginx Proxy Manager依次进入,SSL证书
->添加SSL证书
->Let's Encrypt
->填写域名
->填写Let's Encrypt邮箱
->打开使用DNS验证
->DNS提供者选择Cloudflare
->填写api_token
->我同意Let's Encrypt服务条款
->保存
成功,后面就可以在这个域名反代时使用了。