Nginx Proxy Manager配置OpenWRT
Nginx Proxy Manager (NPM) 是一个基于 Nginx 的图形化反向代理管理工具,它简化了通过 Nginx 进行反向代理、SSL 管理和虚拟主机配置的过程。NPM 适合那些不熟悉命令行或希望快速配置反向代理的用户。
- 反向代理 (Reverse Proxy):可以将外部请求代理到内部服务器,隐藏内部服务器的真实 IP 地址。它支持通过域名或路径进行路由。
- SSL/TLS 管理:内置支持 Let's Encrypt,能够自动获取和更新 SSL 证书,从而实现 HTTPS 加密。
- 简单的图形界面:提供一个用户友好的 Web 界面,帮助用户轻松管理反向代理、SSL 证书和其他 Nginx 配置。
- 访问控制:可以为不同的服务或域设置基础的访问认证。
- 日志与监控:提供基本的访问日志和错误日志,帮助用户进行监控和故障排查。
- 部署多个 Web 服务,利用反向代理通过不同的域名或路径访问不同的服务。
- 为自托管的服务(如 Home Assistant、NextCloud、Jellyfin 等)提供 HTTPS 保护。
- 集中管理 SSL 证书,简化多站点的证书更新工作。
OpenWRT 是一个开源的 Linux 操作系统,专为嵌入式设备(如路由器)设计。它为普通路由器提供了强大的功能扩展,可以将路由器打造成一台灵活的网络设备,支持网络路由、设备管理、VPN、广告拦截等多种网络功能。
- 灵活的路由功能:支持多种高级路由协议(如 OSPF、BGP),并提供复杂的网络配置能力。
- 丰富的包管理系统:通过 OpenWRT 的软件包管理系统 opkg,用户可以安装大量的扩展包,如 VPN、AdBlock、DNS 服务器等。
- 网络管理:可以管理多个无线和有线网络接口,支持 VLAN、WAN 和 LAN 接口的灵活配置。
- 防火墙:内置防火墙功能,支持状态监控、防火墙规则、NAT 转发、端口映射等。
- 安全性:OpenWRT 社区会不断发布更新,提供最新的安全补丁,并支持加密协议、VPN、入侵检测等多种安全功能。
- 家庭网络优化:通过 OpenWRT 提升普通家用路由器的功能,实现更高效的网络管理,如 QoS(质量服务)、流量控制、双拨、负载均衡等。
- 企业级网络管理:在中小企业环境中,OpenWRT 可以用于复杂的网络拓扑配置,如多 WAN 接入、VLAN、VPN、远程办公接入等。
- 自托管服务的网关:通过 OpenWRT,用户可以将路由器变成一个网关,使用 Nginx Proxy Manager 等工具管理家中或企业内部的多个服务。
将 Nginx Proxy Manager 与 OpenWRT 结合使用,可以为网络环境中的多个 Web 服务提供反向代理功能和 SSL 加密。在 OpenWRT 路由器上部署 Docker 容器后,用户可以轻松地通过 Nginx Proxy Manager 管理这些服务。OpenWRT 负责处理外部网络流量,并将流量通过端口转发传递给 Nginx Proxy Manager,由 NPM 再将请求分配给不同的内部服务。
组合使用的优势: 集中化管理:Nginx Proxy Manager 提供了可视化的管理工具,用户可以在一个界面中集中管理多个站点和服务的反向代理、SSL 证书等配置。 增强网络安全:通过 OpenWRT 的防火墙功能和 Nginx Proxy Manager 的 SSL 加密功能,能够提升整个网络的安全性。 灵活的网络访问:Nginx Proxy Manager 可以将多个内网服务暴露给外网,同时通过 OpenWRT 实现流量控制和带宽优化。
配置 Nginx Proxy Manager 在 OpenWRT 上, 可以通过以下步骤进行。 你可以通过 Docker 安装 Nginx Proxy Manager(NPM),然后在 OpenWRT 上配置相关的转发规则。
由于 OpenWRT 没有直接支持 Docker,你可以先确保你的路由器具有足够的性能并支持 Docker 的安装。如果 OpenWRT 支持 Docker,那么可以继续执行以下步骤。
1bash
2opkg update
3opkg install docker dockerd docker-compose
4
1Copy code
2/etc/init.d/dockerd start
3/etc/init.d/dockerd enable
4
首先,你需要在 OpenWRT 上准备好 Docker,并通过 Docker 部署 Nginx Proxy Manager。
你可以创建一个 docker-compose.yml 文件来简化 Nginx Proxy Manager 的配置。
1bash
2Copy code
3mkdir -p /opt/nginx-proxy-manager
4cd /opt/nginx-proxy-manager
5
然后在 /opt/nginx-proxy-manager 目录下创建 docker-compose.yml 文件,内容如下:
1yaml
2Copy code
3version: '3'
4services:
5 app:
6 image: 'jc21/nginx-proxy-manager:latest'
7 restart: unless-stopped
8 ports:
9 - '80:80' # HTTP
10 - '81:81' # Nginx Proxy Manager UI
11 - '443:443' # HTTPS
12 environment:
13 DB_SQLITE_FILE: "/data/database.sqlite"
14 volumes:
15 - ./data:/data
16 - ./letsencrypt:/etc/letsencrypt
17
执行以下命令以启动 Nginx Proxy Manager:
1bash
2Copy code
3docker-compose up -d
4
此时,Nginx Proxy Manager 将通过 Docker 容器运行,并可以通过以下端口访问:
- Web UI 访问地址:http://路由器IP:81
- 初始登录信息:
- 用户名: [email protected]
- 密码: changeme
为了使 OpenWRT 能将外部流量转发到 Nginx Proxy Manager,你需要配置防火墙规则和端口转发。
在 OpenWRT Web 界面:
- 打开 Network > Firewall > Port Forwards。
- 添加新的端口转发规则:
- Name: Nginx Proxy Manager
- Protocol: TCP
- External Port: 80 (HTTP) 和 443 (HTTPS)
- Internal IP Address: NPM 容器所在的 OpenWRT 内部 IP(比如 192.168.1.x)。
- Internal Port: 80 (HTTP) 和 443 (HTTPS)
确保在 Network > Firewall 中启用相应的防火墙规则,使外部流量可以访问到 NPM 的 80 和 443 端口。
现在你可以通过 Nginx Proxy Manager 的 Web 界面来配置反向代理。
- 登录到 Nginx Proxy Manager (http://(路由器IP):81)。
- 通过点击 Proxy Hosts,然后点击 Add Proxy Host 来添加反向代理条目。
- 填写以下信息:
- Domain Names: 你希望代理的域名或 IP 地址。
- Forward Hostname/IP: 目标服务的内部 IP(例如在你网络中的 Web 服务器)。
- Forward Port: 目标服务的端口号(例如 80 或 443)。
- 根据需要启用 SSL,并选择获取免费的 Let's Encrypt SSL 证书(如适用)。
确保你已经正确配置了 Nginx Proxy Manager 和 OpenWRT 防火墙。如果所有步骤都正确,外部流量将被正确代理到内部服务器。
通过在 OpenWRT 上运行 Docker 和 Nginx Proxy Manager,结合 OpenWRT 的防火墙和端口转发功能,你可以为你的网络服务提供一个强大的反向代理解决方案。这不仅可以简化对多个内部服务的访问,还能为外部访问提供 SSL 加密。