在搭建家庭服务器或NAS时,我们通常会部署多个Web服务(如Nextcloud、Jellyfin、Home Assistant等),每个服务都需要通过域名和HTTPS访问。Nginx Proxy Manager(简称NPM)是一款基于Nginx的反向代理管理工具,提供了友好的Web界面,让配置反向代理和SSL证书变得异常简单。今天这篇文章,我们来详细介绍NPM的使用方法。
一、什么是反向代理?为什么需要它?
反向代理(Reverse Proxy)是一种服务器架构模式,客户端不直接访问后端服务,而是先访问反向代理服务器,由反向代理将请求转发给对应的后端服务。
反向代理的主要作用:
统一入口:多个后端服务可以通过不同的子域名或路径,统一通过80/443端口对外提供服务。
SSL终端:在反向代理层统一处理HTTPS加密,后端服务可以使用普通的HTTP,简化配置。
负载均衡:可以将请求分发到多个后端服务器,提高可用性和性能。
安全防护:隐藏后端服务器的真实IP和端口,增加安全性。
举个例子:你有Jellyfin运行在8096端口,Nextcloud运行在8080端口,Home Assistant运行在8123端口。通过反向代理,你可以用jellyfin.yourdomain.com、cloud.yourdomain.com、ha.yourdomain.com这样的域名访问它们,而不需要记端口号。
二、Nginx Proxy Manager简介
Nginx Proxy Manager是基于Nginx和Node.js开发的开源工具,它将复杂的Nginx配置转化为简单的Web界面操作:
• 可视化配置:通过Web界面添加、修改代理规则
• 自动SSL证书:集成Let's Encrypt,一键申请和续期SSL证书
• 访问控制:支持Basic Auth、IP白名单等访问限制
• 重定向:支持HTTP自动跳转到HTTPS
• 自定义Nginx配置:高级用户可以添加自定义配置
三、Docker部署NPM
NPM官方推荐通过Docker部署,以下是docker-compose配置:
```yaml
version: '3.8'
services:
npm:
image: jc21/nginx-proxy-manager:latest
container_name: npm
restart: unless-stopped
ports:
- "80:80" # HTTP端口
- "443:443" # HTTPS端口
- "81:81" # 管理界面端口
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
environment:
- DB_SQLITE_FILE=/data/database.sqlite
```
部署完成后,访问http://服务器IP:81进入管理界面。
默认登录信息:
邮箱:admin@example.com
密码:changeme
首次登录后务必修改默认密码!
四、配置反向代理实战
场景1:代理本地服务
假设你有一个Jellyfin服务运行在192.168.1.100:8096,想通过jellyfin.yourdomain.com访问:
1. 在NPM界面点击"Proxy Hosts"→"Add Proxy Host"
2. Domain Names:填写jellyfin.yourdomain.com
3. Scheme:选择http(如果后端是HTTPS则选https)
4. Forward Hostname/IP:填写192.168.1.100
5. Forward Port:填写8096
6. 勾选"Block Common Exploits"(阻止常见攻击)
7. 保存
场景2:配置SSL证书
1. 编辑刚才创建的代理规则
2. 切换到"SSL"标签页
3. SSL Certificate:选择"Request a new SSL Certificate"
4. 勾选"Force SSL"(强制HTTPS)
5. 勾选"I Agree to the Let's Encrypt Terms of Service"
6. 保存,NPM会自动申请证书
场景3:添加访问密码
1. 在"Access Lists"中创建访问列表
2. 设置用户名和密码
3. 在代理规则中选择该访问列表
五、进阶技巧与注意事项
泛域名证书:
如果你有多个子域名,可以申请通配符证书(*.yourdomain.com),这样所有子域名共用一个证书。
WebSocket支持:
某些应用(如Home Assistant、Code Server)使用WebSocket,需要在代理设置中开启"Websockets Support"。
自定义Location:
在"Advanced"标签页可以添加自定义Nginx配置,满足特殊需求。
备份配置:
定期备份./data目录,里面包含了所有的配置信息。
端口冲突:
NPM需要使用80和443端口,确保这些端口没有被其他服务占用。
Nginx Proxy Manager极大地简化了反向代理的配置过程,即使是不熟悉Nginx的用户也能快速上手。如果你正在搭建家庭服务器,强烈推荐使用NPM来管理你的Web服务!


评论(0)