Nginx Proxy Manager (NPM) 是一个基于 Nginx 的图形界面,用于方便地管理反向代理、TLS证书和其他与 Nginx 相关的任务。以下是 Nginx Proxy Manager 的安装和使用指南:
- 系统要求
- Docker 和 Docker Compose 已安装在您的系统上
- 一个安装有 Linux 发行版的服务器,如 Ubuntu 18.04 或更高版本
- 安装 Nginx Proxy Manager
a. 创建一个新目录以存储 NPM 的配置文件和数据:
mkdir nginx-proxy-manager cd nginx-proxy-manager
b. 创建一个名为 docker-compose.yml
的文件:
vim docker-compose.yml
c. 将以下内容粘贴到 docker-compose.yml
文件中:
version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' restart: always ports: - '80:80' - '81:81' - '443:443' environment: DB_MYSQL_HOST: "db" DB_MYSQL_PORT: 3306 DB_MYSQL_USER: "npm" DB_MYSQL_PASSWORD: "npm" DB_MYSQL_NAME: "npm" volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt db: image: 'jc21/mariadb-aria:latest' restart: always environment: MYSQL_ROOT_PASSWORD: 'npm' MYSQL_DATABASE: 'npm' MYSQL_USER: 'npm' MYSQL_PASSWORD: 'npm' volumes: - ./data/mysql:/var/lib/mysql
在此文件中,我们定义了两个服务:app(Nginx Proxy Manager)和 db(MariaDB 数据库)。我们还定义了所需的环境变量和数据卷。
d. 保存并关闭文件。然后,在同一目录下运行以下命令以启动 Nginx Proxy Manager 和数据库容器:
docker-compose up -d
此命令将拉取所需的 Docker 镜像并启动两个容器。这可能需要几分钟的时间。
- 访问 Nginx Proxy Manager 界面
在浏览器中输入服务器的 IP 地址或域名,加上端口 81(例如 http://your-server-ip:81
或 http://your-domain.com:81
),以访问 Nginx Proxy Manager 的登录页面。
默认的管理员帐户信息如下:
- 邮箱:[email protected]
- 密码:changeme
登录后,您将被提示更改管理员帐户的电子邮件地址和密码。
- 使用 Nginx Proxy Manager
要添加新的代理主机,请执行以下操作:
a. 点击 "Proxy Hosts" 菜单,然后点击 "Add Proxy Host"。
b. 在 "Domain Names" 中,输入您要代理的域名。
c. 在 "Forward Hostname / IP" 和 "Forward Port" 中,输入您要代理到的目标主机名或 IP 地址以及目标端口。
d. 若要使用 SSL/TLS,转到 "SSL" 选项卡,然d. 若要使用 SSL/TLS,转到 "SSL" 选项卡,然后选择 "Request a new SSL Certificate"。勾选 "Force SSL" 和 "HTTP/2 Support",然后输入您的电子邮件地址。最后,点击 "Save" 按钮。
e. 保存代理主机配置后,Nginx Proxy Manager 将自动为您的域名生成反向代理,并在需要时处理 SSL/TLS 证书。
使用 Docker 网络是连接 Nginx Proxy Manager 和其他 Docker 容器的更安全且优秀的做法。以下是如何使用 Docker 网络来代理 Docker 容器端口的指南:
- 创建一个 Docker 网络。例如,创建一个名为 "scoobydoo" 的网络:
docker network create scoobydoo
- 修改 Nginx Proxy Manager 和其他在同一 Docker 主机上运行的服务的
docker-compose.yml
文件。将以下内容添加到每个服务的docker-compose.yml
文件中:
networks: default: external: true name: scoobydoo
以 Portainer 为例,其 docker-compose.yml
文件如下所示:
version: '3.8' services: portainer: image: portainer/portainer privileged: true volumes: - './data:/data' - '/var/run/docker.sock:/var/run/docker.sock' restart: unless-stopped networks: default: external: true name: scoobydoo
-
确保 Nginx Proxy Manager 和其他服务都连接到同一个 Docker 网络。如果已经启动了容器,请使用
docker-compose down
命令停止容器,然后使用docker-compose up -d
重新启动它们。 -
在 Nginx Proxy Manager 的 Web 界面中创建一个新的代理主机。在 "Forward Hostname / IP" 中,输入目标 Docker 服务的服务名(在本例中为 "portainer")。在 "Forward Port" 中,输入目标容器暴露的端口(在本例中为 9000)。
-
完成 SSL/TLS 配置(如果需要),然后保存代理主机。
现在,Nginx Proxy Manager 将为您的 Docker 容器设置反向代理。当用户访问与代理主机关联的域名时,他们将被重定向到您的 Docker 容器。通过使用 Docker 网络,您无需将目标容器的端口发布到 Docker 主机的所有接口,从而提高了安全性。
将 Nginx Proxy Manager 与 V2Ray 配合使用的方法:
- 首先,确保您的 V2Ray 服务已配置为 WebSocket(ws)传输方式,因为 Nginx 更擅长处理 HTTP/HTTPS 流量。
- 在 Nginx Proxy Manager 中创建一个新的代理主机。在 "Domain Names" 中,输入您为 V2Ray 配置的域名。
- 在 "Forward Hostname / IP" 中,输入您的 V2Ray 服务的 IP 地址或主机名。在 "Forward Port" 中,输入您的 V2Ray 服务的 WebSocket 端口。
- 转到 "SSL" 选项卡,选择 "Request a new SSL Certificate"。勾选 "Force SSL" 和 "HTTP/2 Support",然后输入您的电子邮件地址。最后,点击 "Save" 按钮。
- 在您的 V2Ray 客户端配置中,更新域名和端口。将域名设置为在步骤 2 中设置的域名,将端口设置为 443(默认的 HTTPS 端口)。