Nginx Proxy Manager配置OpenWRT

Post Time: Sep 23, 2024
Last Time: Nov 25, 2024

Nginx Proxy Manager

Nginx Proxy Manager (NPM) 是一个基于 Nginx 的图形化反向代理管理工具,它简化了通过 Nginx 进行反向代理、SSL 管理和虚拟主机配置的过程。NPM 适合那些不熟悉命令行或希望快速配置反向代理的用户。

主要功能:

  1. 反向代理 (Reverse Proxy):可以将外部请求代理到内部服务器,隐藏内部服务器的真实 IP 地址。它支持通过域名或路径进行路由。
  2. SSL/TLS 管理:内置支持 Let's Encrypt,能够自动获取和更新 SSL 证书,从而实现 HTTPS 加密。
  3. 简单的图形界面:提供一个用户友好的 Web 界面,帮助用户轻松管理反向代理、SSL 证书和其他 Nginx 配置。
  4. 访问控制:可以为不同的服务或域设置基础的访问认证。
  5. 日志与监控:提供基本的访问日志和错误日志,帮助用户进行监控和故障排查。

使用场景:

  1. 部署多个 Web 服务,利用反向代理通过不同的域名或路径访问不同的服务。
  2. 为自托管的服务(如 Home Assistant、NextCloud、Jellyfin 等)提供 HTTPS 保护。
  3. 集中管理 SSL 证书,简化多站点的证书更新工作。

OpenWRT

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 的组合使用

将 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

配置 Nginx Proxy Manager 在 OpenWRT 上, 可以通过以下步骤进行。 你可以通过 Docker 安装 Nginx Proxy Manager(NPM),然后在 OpenWRT 上配置相关的转发规则。

1. 安装 Docker 和 Docker Compose(如果尚未安装)

由于 OpenWRT 没有直接支持 Docker,你可以先确保你的路由器具有足够的性能并支持 Docker 的安装。如果 OpenWRT 支持 Docker,那么可以继续执行以下步骤。

1.1 安装 Docker

Copy
1bash
2opkg update
3opkg install docker dockerd docker-compose
4

1.2 启动并启用 Docker

bash Copy
1Copy code
2/etc/init.d/dockerd start
3/etc/init.d/dockerd enable
4

2. 使用 Docker 安装 Nginx Proxy Manager

首先,你需要在 OpenWRT 上准备好 Docker,并通过 Docker 部署 Nginx Proxy Manager。

2.1 创建 NPM 容器

你可以创建一个 docker-compose.yml 文件来简化 Nginx Proxy Manager 的配置。

language Copy
1bash
2Copy code
3mkdir -p /opt/nginx-proxy-manager
4cd /opt/nginx-proxy-manager
5

然后在 /opt/nginx-proxy-manager 目录下创建 docker-compose.yml 文件,内容如下:

language Copy
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

2.2 启动 Nginx Proxy Manager

执行以下命令以启动 Nginx Proxy Manager:

language Copy
1bash
2Copy code
3docker-compose up -d
4

此时,Nginx Proxy Manager 将通过 Docker 容器运行,并可以通过以下端口访问:

  1. Web UI 访问地址:http://路由器IP:81
  2. 初始登录信息:

3. 配置 OpenWRT 防火墙和端口转发

为了使 OpenWRT 能将外部流量转发到 Nginx Proxy Manager,你需要配置防火墙规则和端口转发。

3.1 配置端口转发

在 OpenWRT Web 界面:

  1. 打开 Network > Firewall > Port Forwards。
  2. 添加新的端口转发规则:
  • 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)

3.2 更新防火墙规则

确保在 Network > Firewall 中启用相应的防火墙规则,使外部流量可以访问到 NPM 的 80 和 443 端口。

4. 在 Nginx Proxy Manager 中配置反向代理

现在你可以通过 Nginx Proxy Manager 的 Web 界面来配置反向代理。

  1. 登录到 Nginx Proxy Manager (http://(路由器IP):81)。
  2. 通过点击 Proxy Hosts,然后点击 Add Proxy Host 来添加反向代理条目。
  3. 填写以下信息:
  • Domain Names: 你希望代理的域名或 IP 地址。
  • Forward Hostname/IP: 目标服务的内部 IP(例如在你网络中的 Web 服务器)。
  • Forward Port: 目标服务的端口号(例如 80 或 443)。
  1. 根据需要启用 SSL,并选择获取免费的 Let's Encrypt SSL 证书(如适用)。

5. 验证配置

确保你已经正确配置了 Nginx Proxy Manager 和 OpenWRT 防火墙。如果所有步骤都正确,外部流量将被正确代理到内部服务器。

总结

通过在 OpenWRT 上运行 Docker 和 Nginx Proxy Manager,结合 OpenWRT 的防火墙和端口转发功能,你可以为你的网络服务提供一个强大的反向代理解决方案。这不仅可以简化对多个内部服务的访问,还能为外部访问提供 SSL 加密。

相关文章