803 字
4 分钟
Nginx Proxy Manager 使用指南
2024-12-26

什么是 Nginx Proxy Manager#

Nginx Proxy Manager 是一个开源的 Nginx 管理工具,旨在简化 Nginx 的配置和管理。它提供了一个 Web 界面,允许用户轻松地管理多个 Nginx 虚拟主机和反向代理。

TIP

Nginx Proxy Manager 通常简称 npm,这与前端的包管理工具 Node Package Manager 缩写同名,因此在使用时需要注意区分。

为什么需要 Nginx Proxy Manager#

如果需要将内网服务暴露到外网,首先需要使用端口转发,将端口暴漏到公网中,如果我们有多个服务,就需要配置多个端口转发,这样不仅非常麻烦,而且还不方便管理,且多个端口暴漏还较为危险,因此我们可以使用 Nginx Proxy Manager 来管理多个反向代理。

安装#

我使用的是 docker-compose 安装的,docker-compose.yml 文件如下:

version: '3.8'
services:
nginx-proxy-manager:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '8880:80'
- '81:81'
- '8443:443'
volumes:
- ./nginx-proxy-manager/data:/data
- ./nginx-proxy-manager/letsencrypt:/etc/letsencrypt

注意:

  • 端口 81 是 NPM 的 Web 端口,80 是 HTTP 端口,443 是 HTTPS 端口。
  • 由于家庭网络(一般 80、443 端口被运营商屏蔽)中部署的 npm 服务,因此需要将端口映射为 80 -> 8880、443 -> 8443。
  • 数据和证书存储在 ./nginx-proxy-manager/data 和 ./nginx-proxy-manager/letsencrypt 目录中。
  • 请根据需要调整端口和路径。

配置#

浏览器进入 http://127.0.0.1:81 ,默认账号密码是 admin@example.com 和 changeme ,登录后会提示你修改密码。

证书申请#

  1. 首先需要添加域名并申请证书,点击 SSL Certificates -> Add SSL Certificate -> Let's Encrypt
  2. 在 Domain Names 处,添加你的域名,可以直接申请泛域名证书(例如 *.mihouo.com),Email Address for Let's Encrypt 填写你的邮箱。
  3. 开启 Use a DNS Challenge,DNS Provider处选择你的域名服务商,在 Credentials File Content 处,将 dns_cloudflare_api_token 修改为你的 DNS 令牌(这篇文章有申请指南使用 ddns-go 进行动态域名解析)。
  4. 同意 Let's Encrypt 的条款,点击 Save 按钮,等待完成证书申请。

添加反向代理#

  1. 点击 Hosts -> Proxy Hosts -> Add Proxy Host
  2. 在 Domain Name 处,填写你的域名(需要携带二级域名),我这里以 alist 服务为例,填写 alist.mihouo.com
  3. 在 Forward Hostname 处,填写你的内网服务地址,我这里以 alist 服务为例,填写 192.168.2.2,Forward Port 填写你的服务端口,我这里是 5244
  4. 选项 Cache Assets、Block Common Exploits、Websockets Support 可以按需开启。
  5. 在 SSL 处,选择你刚刚申请的证书。开启 Force SSL 选项,其余选择可以按需开启。点击 Save 按钮,完成反向代理添加。

验证#

浏览器打开 https://alist.mihouo.com:8443 ,如果配置正确,则可以看到 alist 的页面。

alist

TIP

需要放行对应端口,如果配置正确,但是无法访问,请检查防火墙和安全组配置。如果你也是家庭宽带,请参考 端口转发 开启内网 npm 映射的 443 端口转发到公网任何你想作为后缀访问的端口。

最后#

Nginx Proxy Manager 是一个非常强大的反向代理工具,可以让你通过域名访问到内网中的服务,也可以方便的申请证书并使用。且只需要放行一个对外端口即可,非常方便。

Nginx Proxy Manager 使用指南
https://www.mihouo.com/posts/network/nginx-proxy-manager-a-comprehensive-user-guide/
作者
佳
发布于
2024-12-26
许可协议
CC BY-NC-SA 4.0