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解析不成功,申请证书失败。

null

进入代理服务-添加代理服务

null

填入已经解析好的域名,和你想代理的IP地址和端口

使用下面的方案为当前域名申请一个Let's Encrypt的免费证书,会自动帮你续期。

null

其他

通用域名、泛域名证书的申请

在每次使用域名时,都会申请一次证书比较麻烦。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->使用模板

null

令牌名称->特定区域 或 所有区域->域名->继续以显示摘要->创建令牌->令牌API(只显示一次,一定要记录好)

nullnull申请证书

获取API令牌后,打开Nginx Proxy Manager依次进入,SSL证书->添加SSL证书->Let's Encrypt->填写域名->填写Let's Encrypt邮箱->打开使用DNS验证->DNS提供者选择Cloudflare->填写api_token->我同意Let's Encrypt服务条款->保存

null

null

成功,后面就可以在这个域名反代时使用了。



最后修改:2024 年 03 月 30 日
如果觉得我的文章对你有用,请随意赞赏