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

使用Nginx-proxy-manager代理Docker中pypi服务器遇404页面未找到错误

问题场景

借助Cloudflare域名、DNS及Nginx Proxy Manager在个人服务器部署pypi私有仓库,遇到以下问题:

  • 已通过docker-compose部署Nginx Proxy Manager(映射80/81/443端口)和pypi-server(映射8080端口)
  • Cloudflare DNS已配置域名指向服务器公网IP,所有相关端口已开放
  • 私网IP直接访问pypi-server完全正常,但通过域名访问时返回404 page not found
  • 更换SSL证书生成方式、测试ArgoCD站点均出现相同404错误,pypi容器与Nginx日志无报错

服务配置文件

Nginx Proxy Manager docker-compose.yaml

version: '3.8'
name: nginx-proxy-manager
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

pypi-server docker-compose.yaml

version: '3.7'

services:
  pypi-server:
    image: pypiserver/pypiserver:latest
    ports:
      - 8080:8080
    volumes:
      - type: bind
        source: /home/ec2-user/pypi/auth
        target: /data/auth
      - type: volume
        source: pypi-server
        target: /data/packages
    command: -P /data/auth/.htpasswd -a update,download,list /data/packages
    restart: always

volumes:
  pypi-server:

排查与解决方向

  1. 核对Nginx Proxy Manager代理主机配置

    • 确认代理主机的域名与Cloudflare DNS记录完全一致(注意www/非www前缀匹配)
    • 验证转发主机IP为服务器正确的私网IP,不要填公网IP(容器同服务器内通信优先用私网IP)
    • 确认转发端口为8080,且未勾选“Websocket支持”(pypi-server无需该配置,误开可能导致路由异常)
    • 检查“高级”选项卡的自定义Nginx配置,是否存在多余的路径重写规则导致404
  2. 验证Cloudflare DNS与代理设置

    • 确认Cloudflare DNS记录的代理状态:若开启橙色云朵(Cloudflare代理),需将SSL模式设为“完整”或“严格”,与Nginx Proxy Manager的SSL证书匹配;若用灰色云朵(仅DNS),确保SSL配置仅在Nginx端生效
    • 用nslookup <你的域名>或dig <你的域名>验证域名解析是否正确指向服务器公网IP,避免DNS缓存干扰
  3. 检查Docker容器间网络连通性

    • 在Nginx Proxy Manager容器内测试能否访问pypi-server:
      docker exec -it nginx-proxy-manager-app-1 bash
      curl http://<服务器私网IP>:8080
      
    • 如果无法访问,说明容器间网络隔离,需将两个服务加入同一自定义网络:
      先创建网络:docker network create pypi-network
      然后修改两个docker-compose.yaml,添加网络配置:
      # 给Nginx Proxy Manager添加
      services:
        app:
          networks:
            - pypi-network
      networks:
        pypi-network:
          external: true
      
      # 给pypi-server添加
      services:
        pypi-server:
          networks:
            - pypi-network
      networks:
        pypi-network:
          external: true
      
      重启两个服务后再测试连通性
  4. 检查Nginx Proxy Manager默认站点

    • 进入Nginx Proxy Manager后台的“主机”页面,删除或禁用默认的示例站点,避免其抢占域名请求
  5. 查看详细访问日志

    • 提取Nginx访问日志中的404相关记录,定位请求的转发情况:
      docker logs nginx-proxy-manager-app-1 | grep -i "404"
      
      从日志可明确请求的域名、路径、转发目标,判断是否是规则未匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:19:59