MENU

Nginx Proxy Manager安装及避坑指南

March 30, 2023 • Read: 8579 • Serendipity

前言

这篇文章介绍了如何安装 Nginx Proxy Manager,一款基于 Nginx 的反向代理管理工具,以及在使用过程中可能遇到的问题和解决方法。文章提供了安装和配置 Nginx Proxy Manager 的简要步骤,并详细介绍了如何避免常见问题,例如无法反代某些网站、SSL 证书配置错误等。通过本文提供的避坑指南,你可以更轻松地使用 Nginx Proxy Manager,享受更好的反向代理体验。

安装

Nginx Proxy Manager 是一个基于 Nginx 的反向代理管理工具,它提供了一个图形化界面,可以让你轻松地设置和管理反向代理、SSL 证书等。这里是如何安装 Nginx Proxy Manager 的简要步骤:

  1. 安装 Docker 和 Docker Compose Nginx Proxy Manager 是通过 Docker 部署的,因此首先需要在你的服务器上安装 Docker 和 Docker Compose。

对于大多数 Linux 发行版,可以使用以下命令安装 Docker:

curl -fsSL <https://get.docker.com> -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USER

接下来,安装 Docker Compose:

sudo curl -L "<https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$>(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
  1. 配置 Nginx Proxy Manager 创建一个新目录来存放 Nginx Proxy Manager 的配置文件和数据:
mkdir nginx-proxy-manager
cd nginx-proxy-manager

在该目录下创建一个名为 docker-compose.yml 的文件:

touch docker-compose.yml

使用文本编辑器打开 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: yobasystems/alpine-mariadb:latest
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: npm
      MYSQL_DATABASE: npm
      MYSQL_USER: npm
      MYSQL_PASSWORD: npm
    volumes:
      - ./data/mysql:/var/lib/mysql

这个配置文件定义了 Nginx Proxy Manager 和 MariaDB 数据库的 Docker 服务。

  1. 启动 Nginx Proxy Manager 在包含 docker-compose.yml 文件的目录中,运行以下命令启动 Nginx Proxy Manager 和数据库容器:

    docker-compose up -d
  2. 访问 Nginx Proxy Manager 管理界面 等待几分钟,让容器启动并初始化。然后在浏览器中访问服务器的 IP 地址或域名,端口为 81。例如:http://your-server-ip:81

默认的管理员用户名和密码分别为 admin@example.comchangeme首次登录后,请确保更改默认密码。

现在你已经成功安装了 Nginx Proxy Manager,可以开始创建和管理反向代理、SSL 证书等。

避坑

安装好之后,大部分网站应该都可以反代了,但是呢总有些网站不行,例如我就遇到了用宝塔可以轻松反代的网站,npm死活反代不了,反馈”404 Not Found”!这里提供一种解决方法。

  1. 检查目标服务器: 确保 你反代的网站可以正常访问。在浏览器或使用 curl 命令检查目标网站是否正常运行。
  2. 检查 Nginx Proxy Manager 的反向代理设置: 登录到 Nginx Proxy Manager 管理界面,然后依次点击 "Proxy Hosts" > "Add Proxy Host"。确保以下设置正确:
  • 域名:在 "Domain Names" 区域中输入你要使用的域名。
  • 协议:在 "Scheme" 区域选择 "https"。
  • 转发主机名和端口:在 "Forward Hostname / IP" 区域中输入目标服务器的地址,并在 "Forward Port" 区域中输入端口号,例如:443
  • WebSocket 支持:如果目标网站使用了 WebSocket,确保勾选 "Websockets"。
  1. 检查 SSL 证书: 由于目标网站使用了 HTTPS,你可能需要为反向代理域名配置 SSL 证书。在 Nginx Proxy Manager 的 "Proxy Hosts" 选项卡中,找到刚刚创建的反向代理条目,然后点击右侧的绿色 "Edit" 图标。切换到 "SSL" 选项卡,选择 "Request a new SSL Certificate",勾选 "Force SSL" 和 "HTTP/2 Support",然后点击 "Save"。
  2. 检查 Nginx 配置: 如果问题仍然存在,可以查看 Nginx Proxy Manager 生成的 Nginx 配置文件。在你创建的 "nginx-proxy-manager" 目录中,找到 "data/nginx/proxy_host" 目录。在这个目录下,找到与你的域名相关的配置文件(例如,2.conf),检查其中的反向代理设置是否正确。
  3. 重启 Nginx Proxy Manager: 在某些情况下,重启 Nginx Proxy Manager 可能有助于解决问题。在包含 docker-compose.yml 文件的目录中,运行以下命令:

    docker-compose down
    docker-compose up -d
  4. 修改 Nginx 配置以传递主机头: 尝试修改 Nginx Proxy Manager 生成的配置文件,以将原始主机头传递给目标服务器。在 2.conf 文件中找到以下行:

    include conf.d/include/proxy.conf;

然后将其替换为以下内容:

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_pass $forward_scheme://$server:$port;

这将确保将原始请求的主机头传递给目标服务器,这对于某些配置可能是必需的。

保存更改后,需要重启 Nginx Proxy Manager 以使更改生效:

docker-compose down
docker-compose up -d
  1. 检查网络连接和防火墙设置: 确保没有任何网络连接问题或防火墙设置阻止了请求。检查服务器上的防火墙规则,确保允许通过 80、443 和 81 端口的传入连接。同时,确认目标服务器的防火墙设置允许从 Nginx Proxy Manager 发起的连接。

## 最后

在总体上,Nginx Proxy Manager 是一款强大的反向代理管理工具,它提供了易于使用的图形化界面,可以轻松地设置和管理反向代理、SSL 证书等。虽然在使用中可能会遇到一些问题,但是通过本文提供的避坑指南,你可以更轻松地使用 Nginx Proxy Manager,享受更好的反向代理体验。祝您成功安装和使用 Nginx Proxy Manager!

Leave a Comment

2 Comments
  1. Geeksun Geeksun

    感谢!

  2. Grit Grit

    重启 Nginx Proxy Manager后出现了bad gateway!难受