由于内网环境下安装了多种不同的WEB服务,为了方便公网使用域名访问和支持HTTPS,常见的做法是在内网搭建一个Nginx服务进行,然后进行反向代理,从而实现服务集中、域名访问和SSL证书部署。
但是手动配置Nginx可能会有些麻烦,容易出错,而且对于新手来说不太友好。不过有了Nginx Proxy Manager,这个问题可以很轻松地解决。
关于Nginx Proxy Manager
Nginx Proxy Manager是一个基于Docker的轻量级、高性能的Web代理(同时也包括反向代理)和电子邮件代理。它具有用户友好的界面,可以很容易地创建和管理Nginx代理主机。
他的特点包括:
- 简易的用户界面:对于不熟悉Nginx配置文件的用户来说,Nginx Proxy Manager提供了一个直观的界面,可以轻松地创建和管理Nginx代理主机。
- SSL支持:Nginx Proxy Manager支持Let's Encrypt,可以自动获取和续订SSL证书,保证通信的安全性。
- 支持Websockets:Nginx Proxy Manager完全支持Websockets,这是许多现代Web应用所需要的。
- 访问控制:可以对访问进行控制,例如,可以设置基本的HTTP认证,或者根据IP地址进行限制。
- 支持HTTP/2:Nginx Proxy Manager支持HTTP/2,可以提供更高的传输效率。
- 自定义Nginx配置:尽管Nginx Proxy Manager已经为大部分用途提供了默认的配置,但如果需要,还可以提供自定义Nginx配置。
- Docker支持:Nginx Proxy Manager是基于Docker的,这意味着你可以在任何支持Docker的平台上运行它。
- 100%免费和开源:Nginx Proxy Manager是开源的,可以自由使用和修改。
总的来说,Nginx Proxy Manager是一个强大的工具,使得管理Nginx反向代理变得更加简单,尤其适合不熟悉Nginx配置文件的用户使用。
Docker-Compose安装Nginx Proxy Manager
首先请确保您已经安装Docker-Compose,然后创建一个目录,用来保存Nginx Proxy Manager数据:
# 创建一个目录
mkdir nginx
# 进入这个目录
cd nginx
在刚刚创建的目录下新建一个文件,命名为docker-compose.yaml
,然后复制下面的内容进行保存。
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '880:80'
- '81:81'
- '8443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
880
是nginx的HTTP端口,您可以根据自身情况修改8443
是nginx的HTTPS端口,您可以根据自身情况修改81
是Nginx Proxy Manager管理界面端口
然后使用命令docker-compose up -d
启动Nginx Proxy Manager,启动成功后输入http://IP:81
打开Nginx Proxy Manager可视化(WEB)界面。
- 默认用户名为:
admin@example.com
- 默认密码为:
changeme
首次使用会要求修改邮箱、密码等信息,请根据提示自行完成修改。
添加反向代理
打开导航栏的“Hosts - Proxy Hosts - Add Proxy Host”,输入您的域名以及反代目标协议 + 目标IP + 目标端口,然后点SAVE保存。
再将您的域名解析到Nginx Proxy Manager所在服务器IP,这样就可以通过http://你的域名:880
进行访问了(注意:我上面使用的HTTP端口是880)
部署SSL证书
Nginx Proxy Manager默认有提供“Let's Encrypt” SSL证书,但实测国内因为X墙的原因,可能用不了。不过没关系,Nginx Proxy Manager也支持添加自己申请的SSL证书。
打开导航栏的“SSL Certificates - Add SSL Certificate - Custom”
根据指示,填写SSL证书名称,和选择私钥文件和证书文件,然后点SAVE进行保存。
回到“Proxy Hosts”中,找到您之前添加的域名,然后进行修改。切换到“SSL”选项栏,选择刚刚添加的自定义SSL证书,然后点保存就行了。
部署完毕后,我们再次访问需要加上https协议,如果使用的非标准端口(443),还需要加上端口进行访问,比如:https://你的域名:8443
升级Nginx Proxy Manager
由于使用的Docker-Compose部署,如果您需要升级Nginx Proxy Manager版本,也非常简单,只需要执行下面的命令就行了:
# 拉取新的镜像
docker-compose pull
# 重新启动Nginx Proxy Manager
docker-compose up -d
其它
除了上面介绍的基本功能外,Nginx Proxy Manager还支持一些其它功能。比如:
- 自定义反向代理的配置,可满足一些复杂的反向代理需求
- 支持Basic密码验证
- 支持IP访问限制
- 支持Strem端口转发
这些都可以直接通过WEB界面完成,非常方便,大家有兴趣可以自行研究。
结语
Nginx Proxy Manager非常适合NAS用户使用,有了Nginx Proxy Manager使得Nginx反向代理配置更加简单,不论是新手还是老司机有了WEB界面的加持都能提高不少效率。
Nginx Proxy Manager官网:https://nginxproxymanager.com/
不是同一台服务器的怎面代理,docker只能代理宿主机的
填写另外的服务器IP就行啊,只要能通讯就可以。不存在docker只能代理宿主机的。
我在群晖上搭建就是不能通信,docker自己一个网段的172开头的IP,其他设备是192开头的,没搞懂怎么通信,请指教。
检查你nginx容器的网络模式,用桥接(bridge)网络。