前言
Ngnix作为反向代理常用工具大家应该都比较熟悉,今天介绍其对应的一个可视化界面配置docker项目nginx-proxy-manager(简称npm),简化nginx的配置提高运维效率。
- 官网地址:https://nginxproxymanager.com/
- github地址:https://github.com/NginxProxyManager/nginx-proxy-manager?tab=readme-ov-file
官网说明如下:
This project comes as a pre-built docker image that enables you to easily forward to your websites running at home or otherwise, including free SSL, without having to know too much about Nginx or Letsencrypt. 提供一个docker镜像能够快速配置ngnix,支持SSL免费证书申请和自动续期,支持访问权限控制等。
NPM安装
镜像拉取
docker pull jc21/nginx-proxy-manager:latest
docker安装
本教程采用portainer(docker管理软件)界面的方式进行docker安装

- 修改下npm管理面的端口映射,443和80端口保持不变,保证服务器全部由npm接管
Volumes路径映射主要是npm自身数据文件和证书信息,避免容器重拉导致数据丢失Restart policy重启策略设置为Always即可- 最后点击
Deploy the container等待容器拉起,然后通过IP:port就可以打开登录页面(防火前需要放行端口),默认登录账号:[email protected],默认密码:changeme
npm配置
SSL证书配置

- 进入菜单
SSL Certificates,新增Let's Encrypt证书 - 填写需要申请SSL证书的域名信息和邮箱,选择域名当前运营商进行授权(不同的运营商授权秘钥方式不一样,请自行查阅),等待几分钟后SSL证书申请完毕

建议直接申请泛域名,例如域名为
abc.com,那么申请的域名为:abc.com,*.abc.com
配置代理
- 新增
Proxy Hosts,填写对应的信息,需要绑定的域名和对应的服务IP和端口
如果服务是部署在同一台服务器,且服务也是docker容器,那么可以直接填写目标服务容器的内网IP和端口,避免对外暴露端口映射被扫描,这样设置后只能通过域名访问;如果是外部服务器或服务那么只能填目标IP和端口,确保目标IP和端口能够访问到对应的服务

- SSL页签选择刚才申请的SSL证书,同时开启强制SSL开关保证网站的安全
- 保存后应该直接访问域名即可打开网站,网站URL连接处应该提示网站是安全的同时能够查看到相应的证书和有效期。

配置访问控制
新建一个Access Lists,然后填写名称,自定义设置账号密码,保存后返回 Proxy Host编辑需要增加访问控制的域名,选择刚才配置的访问控制名称,再次打开域名发现需要账号密码验证

FAQ
配置proxy代理时 Custom locations无法配置,或者配置后状态为 offline
此问题由于环境或者版本不兼容导致,重新拉取以下镜像即可解决
docker pull jc21/nginx-proxy-manager:github-pr-3478
评论区