You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Docker中NGINX Proxy Manager与NGINX部署静态站遇反向代理问题

排查NGINX Proxy Manager反向代理静态站点跳转默认页面问题

问题概述

在家庭实验室部署静态站点,使用CloudFlare托管域名,通过Docker运行NGINX Proxy Manager(NPM)和静态站NGINX容器,配置反向代理后始终跳转至NPM默认的"Congratulations"页面。已确认:

  • 两个容器处于同一网络
  • 宿主机IP+端口可正常访问静态站
  • 可通过4081端口访问NPM管理面板
  • CloudFlare SSL配置完成

现有配置

NGINX Proxy Manager Docker Compose

version: '3.9'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '4080:80' # Public HTTP Port
      - '40443:443' # Public HTTPS Port
      - '4081:81' # Admin Web Port
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro

静态站NGINX Docker Compose

version: '1.0'
services:
  nginx:
    restart: unless-stopped
    image: nginx:latest
    ports:
      - 4090:80
    volumes:
      - /static-site/:/usr/share/nginx/html:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro

排查步骤与解决方案

1. 修正代理主机的目标地址配置

NPM反向代理的目标地址需使用容器内部的服务名+端口,而非宿主机IP+映射端口:

  • 进入NPM管理面板(4081端口),找到创建的代理主机
  • 将「转发主机名/IP」改为静态站容器的服务名nginx
  • 「转发端口」改为容器内部端口80(不是宿主机的4090)

原因:同一Docker网络内,容器可通过服务名直接通信,使用宿主机端口会绕开内部网络,且可能因Host网络配置导致规则不匹配。

2. 确认Docker网络的一致性

若两个容器是分别启动的Compose项目,默认会生成各自独立的Docker网络,需手动指定同一自定义网络:

  1. 先创建自定义网络:
    docker network create homelab-network
    
  2. 修改两个Compose文件,添加网络配置:

    NPM Compose新增:

    networks:
      default:
        external:
          name: homelab-network
    

    静态站NGINX Compose新增:

    networks:
      default:
        external:
          name: homelab-network
    
  3. 重启两个容器,确保它们加入同一网络。

3. 验证NPM容器与静态站的连通性

进入NPM容器,测试是否能正常访问静态站:

# 进入NPM容器(替换为你的容器ID或名称)
docker exec -it nginx-proxy-manager-app-1 /bin/bash

# 测试ping静态站服务名,确认网络连通
ping nginx

# 测试获取静态站内容,确认服务正常
curl http://nginx:80

如果curl能返回静态站的HTML内容,说明网络和静态站服务正常;若失败,需检查网络配置或静态站容器状态。

4. 检查代理规则的匹配条件

NPM的默认页面仅在无匹配代理规则时触发,需确保:

  • 代理主机配置的域名与CloudFlare解析的域名完全一致(包括子域名)
  • 访问时使用配置的域名(如https://your-domain.com),而非直接访问宿主机IP+4080端口(此时Host头不匹配,NPM无法找到对应规则)
  • 关闭或删除可能冲突的泛域名代理规则(如*.your-domain.com)

5. 检查SSL与强制跳转配置

在NPM代理主机的SSL配置中:

  • 选择正确的SSL证书(CloudFlare证书或NPM自动生成的Let's Encrypt证书)
  • 开启「Force SSL」,确保HTTP请求自动跳转至HTTPS
  • 开启「HTTP/2 Support」(可选,但能优化访问体验)

内容的提问来源于stack exchange,提问作者wutang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 21:50:25