通用技术 反向代理神器 NginxProxyManager,操作简单,支持免费 SSL 证书

花菜 · 2023年04月07日 · 7767 次阅读

nginx-proxy-manager 是什么

  • nginx-proxy-manager 是一个用于管理 NGINX 反向代理服务器的 Web 界面。
  • 它提供了一种易于使用的方法来配置和管理反向代理,SSL 证书以及与多个主机的连接。
  • 它还具有可视化的 DNS 记录管理界面,可以轻松地将域名映射到特定的主机或 IP 地址。
  • 此外,它还提供了基于 OAuth 的身份验证和 LDAP 集成,以便管理多个用户的访问和权限。

1、为什么需要 nginx-proxy-manager

  • 基于 docker,部署超简单
  • 支持 Let’s Encrypt SSL 免费证书
  • 界面化操作,使用简单(和直接编写 nginx 配置,宝塔相比)
  • 占用资源少(和宝塔相比)

2、部署步骤

2.1 安装 docker 和 docker-compose

2.2 创建 docker-compose.yml

version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:2.9.22'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

2.3 启动 nginx-proxy-manager

docker-compose up -d

2.4 获取 nginx-proxy-manager 登录密码

$ docker-compose logs|grep admin
/usr/local/lib/python3.6/site-packages/paramiko/transport.py:32: CryptographyDeprecationWarning: Python 3.6 is no longer supported by the Python core team. Therefore, support for it is deprecated in cryptography. The next release of cryptography will remove support for Python 3.6.
  from cryptography.hazmat.backends import default_backend
app_1  | [4/6/2023] [2:26:07 PM] [Setup    ] › ℹ  info      Creating a new user: admin@example.com with password: changeme
app_1  | [4/6/2023] [2:26:07 PM] [Setup    ] › ℹ  info      Initial admin setup completed

两个关键信息,邮箱和密码
admin@example.com
changeme

2.5 登录 nginx-proxy-manager 管理面板

浏览器打开http://你的vpsip:81

image.png

2.6 按照指引修改 email 和密码

3、配置反向代理

3.1 获取docker0网卡的地址

输入ip addr show docker0
得到

4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:d0:58:40:93 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

172.17.0.1就是docker0网卡的地址了

3.2 修改应用docker-compose.yml文件

chatgpt-web这个项目举例

version: '3'
services:
  app:
    image: chenzhaoyu94/chatgpt-web # 总是使用 latest ,更新时重新 pull 该 tag 镜像即可
    ports:
      # - "1443:3002" # 这样写,会把端口直接暴露到公网,可以通过http://vpsip:1443 访问到服务 
      # 改成下面的下写法
      # 172.17.0.1是docker0的ip
      # 只对docker网络暴露1443端口,避免公网ip直接访问
      - "172.17.0.1:1443:3002"

## 3.3 域名解析

chat.huacai.one这个域名,我已经提前在CloudFlare解析好,把域名指向我 vps ip
image-20230407171316639

3.4 增加一个反向代理

image.png
image.png
image.png

点击 Save
如果看到这样,就是域名还没解析成功
image-20230407171515469

成功是这样的

image.png

3.4 验证服务

然后在浏览器打开你的域名,就看到这把安全的小锁,就证明使用上了https

第一次打开域名时可能有点慢,需要稍微等待一下
如果加载不出来,可以使用隐身模式
image.png

更多精彩内容可以关注花菜の博客

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册