惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
P
Privacy & Cybersecurity Law Blog
G
GRAHAM CLULEY
T
The Exploit Database - CXSecurity.com
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Project Zero
Project Zero
S
Security @ Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
A
Arctic Wolf
Webroot Blog
Webroot Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Security Latest
Security Latest
H
Heimdal Security Blog
N
News and Events Feed by Topic
N
News | PayPal Newsroom
T
Tor Project blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
Scott Helme
Scott Helme
A
About on SuperTechFans
M
MIT News - Artificial intelligence
V
V2EX
V
Visual Studio Blog
Recorded Future
Recorded Future
博客园 - 叶小钗
F
Fortinet All Blogs
L
Lohrmann on Cybersecurity
The GitHub Blog
The GitHub Blog
博客园 - Franky
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Secure Thoughts
D
DataBreaches.Net
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)
I
InfoQ
SecWiki News
SecWiki News
Blog — PlanetScale
Blog — PlanetScale
Engineering at Meta
Engineering at Meta
J
Java Code Geeks
B
Blog RSS Feed
AWS News Blog
AWS News Blog
Know Your Adversary
Know Your Adversary
V
Vulnerabilities – Threatpost
H
Help Net Security

Casear的技术栈

Ubuntu 26.04 装 NVIDIA 580 内网异机备份 conf 驱动 Razer_GRUB_Theme Fcitx5 输入法配置:切换中文输入法 服务器 zsh 环境配置记录:Zim + p10k + eza + zoxide # ThinkPad T490s Linux 指纹模块启用指南(KDE vanblog使用picgo图床的完整部署教程 vanblog备份恢复评论数据 如何配置一个虚拟显示器,以便远程没有显示器的系统 解决 OpenConnect VPN 由于 JScript 引擎丢失导致的 Error 1 修复 Fuck 2025 ATT&CK红队评估实战靶场二 一言 解决kde环境下切换登陆屏幕(SDDM)后显示异常 rss Linux实用软件分享 Kubuntu 上安装 显卡驱动 和 EnvyControl kubuntu 搜狗输入法安装问题解决 终端工具的选择 chatlog 青龙面板+wxBotWebhook实现自动推送天气 mac 安装 第三方应用问题 zsh 安装与配置,使用 oh-my-zsh 美化终端 pve虚拟机硬盘直通 tldr-pages 安装 pve安装Arch-linux Arch-linux安装桌面环境 提问的艺术极简板 Waline 服务端独立部署解决方案 记-先锋书店 api开发-更优雅的[规范响应数据] sqli 1-7关 Xiaomi-Mall-Home kali设置为中文 vscode连接docker查看代码 DVWA--SQL Injection(Blind)(盲注Python脚本) 使用Hexo生成大量页面时卡死问题解决 在Ubuntu上搭建Fivem服务器 互联网档案计划(Internet Archive) NEZHA监控面板美化 哪吒监控配置 CentOS7安装MySQL8.0 burpsuite ca证书安装 powerShell script 你一句春不晚,我就到了真江南 DVWA靶场--XSS(Reflected)教程 DVWA靶场--JavaScript Attacks (前端攻击) 强网杯2023 谍影重重2.0 wp shell脚本备份 MySQL数据库 青龙面板定时规则 异地容灾备份系统两地三中心 转载 关于躺平 python打包可执行文件 python定义函数 MySQL8.0以上PHP连接问题
Nginx Proxy Manager安装及避坑指南
casearx@foxm · 2024-06-25 · via Casear的技术栈

请注意,本文编写于 718 天前,最后修改于 718 天前,其中某些信息可能已经过时。

前言

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

使用Docker安装

拉取镜像

docker pull jc21/nginx-proxy-manager:latest

使用镜像构建容器

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:

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:

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 的配置文件和数据:

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

在该目录下创建一个名为 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

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


访问 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 文件的目录中,运行以下命令:

docker-compose down docker-compose up -d

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

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

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

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

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