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

Docker反向代理多站点容器无法外部访问求助(521错误)

解决Docker LEMP架构外部访问521无响应问题

问题排查与修复步骤

1. 检查反向代理容器的端口映射

外部请求无法到达反向代理容器是521错误的核心诱因之一。执行命令确认端口映射状态:

docker ps

查看反向代理容器的PORTS列,必须存在0.0.0.0:80->80/tcp或:::80->80/tcp的映射。如果没有,需重新配置端口映射:

  • 用docker run启动容器时,添加-p 80:80参数
  • 用Docker Compose部署时,在反向代理服务块中添加:
ports:
  - "80:80"

修改后重启反向代理容器。

2. 修正反向代理Nginx配置

你的配置存在两处关键错误,直接导致外部访问失败:

  • server_name需与外部实际访问的域名完全一致,而非容器名称
  • proxy_pass应直接使用Docker容器名称(无需后缀),依赖Docker内部DNS完成解析

修正后的配置示例:

server {
    listen 80;
    server_name website1.com; # 替换为你实际访问的域名
    location / {
        proxy_pass http://container1; # 替换为对应站点容器的名称
        proxy_buffering off;
        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;
    }
}

server {
    listen 80;
    server_name website2.com; # 替换为第二个站点的实际域名
    location / {
        proxy_pass http://container2; # 替换为第二个站点容器的名称
        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_buffering off;
    }
}

修改后重启反向代理容器加载新配置。

3. 检查宿主机防火墙与云安全组

  • 若使用ufw防火墙,执行命令开放80端口:
sudo ufw allow 80/tcp
sudo ufw reload
  • 若为云服务器,登录服务商控制台,确保安全组规则允许0.0.0.0/0的80端口入站流量。

4. 确认容器处于同一Docker网络

Docker容器仅在同一网络内才能通过名称互相访问。执行命令检查容器所在网络:

docker inspect container1 | grep Networks
docker inspect reverse-proxy | grep Networks

若不在同一网络,将站点容器连接到反向代理所在网络:

docker network connect <你的反向代理网络名称> container1

5. 验证修复

在宿主机执行:

curl http://website1.com

或直接在浏览器访问域名,确认是否正常响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:18:12