编辑
2024-06-25
Linux
00
请注意,本文编写于 226 天前,最后修改于 226 天前,其中某些信息可能已经过时。

目录

Nginx Proxy Manager 安装与使用指南
前言
使用Docker安装
拉取镜像
使用镜像构建容器
使用Docker Compose安装
安装 Docker 和 Docker Compose
接下来,安装 Docker Compose:
配置 Nginx Proxy Manager
启动 Nginx Proxy Manager
访问 Nginx Proxy Manager 管理界面
避坑
检查目标服务器
检查 Nginx Proxy Manager 的反向代理设置
检查 Nginx 配置
重启 Nginx Proxy Manager
修改 Nginx 配置以传递主机头
检查网络连接和防火墙设置

Nginx Proxy Manager 安装与使用指南

前言

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

使用Docker安装

拉取镜像

bash
docker pull jc21/nginx-proxy-manager:latest

使用镜像构建容器

bash
docker run -d -p 80:80 -p 81:81 -p 443:443 --restart=always -v ~/data:/data -v ~/letsencrypt:/etc/letsencrypt jc21/nginx-proxy-manager:latest
  • docker run:这是 Docker 用来创建和启动容器的命令。
  • -d:表示以守护进程模式运行容器,即在后台运行。
  • -p 80:80:将容器内部的 80 端口映射到宿主机的 80 端口,通常用于 HTTP 服务。
  • -p 81:81:将容器内部的 81 端口映射到宿主机的 81 端口,可能用于其他服务或管理界面。
  • -p 443:443:将容器内部的 443 端口映射到宿主机的 443 端口,通常用于 HTTPS 服务。
  • --restart=always:设置容器的重启策略为始终尝试重启容器。
  • -v ~/data:/data:将宿主机的 ~/data 目录挂载到容器的 /data 目录,用于持久化存储数据。
  • -v ~/letsencrypt:/etc/letsencrypt:将宿主机的 ~/letsencrypt 目录挂载到容器的 /etc/letsencrypt 目录,用于存储 Let's Encrypt 证书。
  • jc21/nginx-proxy-manager
    :指定要运行的 Docker 镜像名称和标签,这里是 nginx-proxy-manager 的最新版本。

使用Docker Compose安装

安装 Docker 和 Docker Compose

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

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

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

接下来,安装 Docker Compose:

bash
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

配置 Nginx Proxy Manager

创建一个新目录来存放 Nginx Proxy Manager 的配置文件和数据:

bash
mkdir nginx-proxy-manager cd nginx-proxy-manager

在该目录下创建一个名为 docker-compose.yml 的文件,并添加以下内容:

bash
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

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

bash
docker-compose up -d

访问 Nginx Proxy Manager 管理界面

等待几分钟,让容器启动并初始化。然后在浏览器中访问服务器的 IP 地址或域名,端口为 81。例如:http://your-server-ip:81。默认的管理员用户名和密码分别为 admin@example.com 和 changeme。首次登录后,请确保更改默认密码。

避坑

检查目标服务器

确保你反代的网站可以正常访问。在浏览器或使用 curl 命令检查目标网站是否正常运行。

检查 Nginx Proxy Manager 的反向代理设置

登录到 Nginx Proxy Manager 管理界面,然后依次点击 "Proxy Hosts" > "Add Proxy Host"。确保以下设置正确:

  • 域名:在 "Domain Names" 区域中输入你要使用的域名。
  • 协议:在 "Scheme" 区域选择 "https"。
  • 转发主机名和端口:在 "Forward Hostname / IP" 区域中输入目标服务器的地址,并在 "Forward Port" 区域中输入端口号,例如:443。
  • WebSocket 支持:如果目标网站使用了 WebSocket,确保勾选 "Websockets"。
  • 检查 SSL 证书 由于目标网站使用了 HTTPS,你可能需要为反向代理域名配置 SSL 证书。在 Nginx Proxy Manager 的 "Proxy Hosts" 选项卡中,找到刚刚创建的反向代理条目,然后点击右侧的绿色 "Edit" 图标。切换到 "SSL" 选项卡,选择 "Request a new SSL Certificate",勾选 "Force SSL" 和 "HTTP/2 Support",然后点击 "Save"。

检查 Nginx 配置

如果问题仍然存在,可以查看 Nginx Proxy Manager 生成的 Nginx 配置文件。在你创建的 "nginx-proxy-manager" 目录中,找到 "data/nginx/proxy_host" 目录。在这个目录下,找到与你的域名相关的配置文件(例如,2.conf),检查其中的反向代理设置是否正确。

重启 Nginx Proxy Manager

在某些情况下,重启 Nginx Proxy Manager 可能有助于解决问题。在包含 docker-compose.yml 文件的目录中,运行以下命令:

bash
docker-compose down docker-compose up -d

修改 Nginx 配置以传递主机头

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

bash
include conf.d/include/proxy.conf;

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

bash
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 以使更改生效。

检查网络连接和防火墙设置

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

使用ubuntu默认的ufw防火墙来开放端口

bash
sudo ufw allow 80/tcp sudo ufw allow 81/tcp sudo ufw allow 443/tcp

本文作者:Casear

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!