846 字
4 分钟
Nginx Proxy Manager 使用指南

什么是 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.comchangeme ,登录后会提示你修改密码。

证书申请#

  1. 首先需要添加域名并申请证书,点击 SSL Certificates -> Add SSL Certificate -> Let's Encrypt
  2. Domain Names 处,添加你的域名,可以直接申请泛域名证书(例如 *.chenjiahao.me),Email Address for Let's Encrypt 填写你的邮箱。
  3. 开启 Use a DNS ChallengeDNS 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.chenjiahao.me
  3. Forward Hostname 处,填写你的内网服务地址,我这里以 alist 服务为例,填写 192.168.2.2Forward Port 填写你的服务端口,我这里是 5244
  4. 选项 Cache AssetsBlock Common ExploitsWebsockets Support 可以按需开启。
  5. SSL 处,选择你刚刚申请的证书。开启 Force SSL 选项,其余选择可以按需开启。点击 Save 按钮,完成反向代理添加。

验证#

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

alist

TIP

需要放行对应端口,如果配置正确,但是无法访问,请检查防火墙和安全组配置。如果你也是家庭宽带,请参考 端口转发 开启内网 npm 映射的 443 端口转发到公网任何你想作为后缀访问的端口。 如果你仍然无法访问且使用的是 Cloudflare ,根据它的提示使用 @ 作为根节点并不可用,请使用 * 作为根节点。

最后#

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

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