Docker容器无法向部分URL发起HTTPS请求(curl 28超时)
Docker容器PHP应用部分HTTPS出站请求超时问题
我在Docker中运行PHP应用时遇到以下问题:容器发起的多数请求(如Symfony HTTP Client请求、composer install)均超时失败。排查后发现,容器无法向部分URL发起HTTPS请求,但Google、Facebook、Yandex等域名可正常响应。仅通过设置network_mode: host可成功发起请求,但出于安全考虑不采用该方案,且此设置会导致PHP无法接收Nginx请求。此外,该容器在本地环境可正常发起请求,因此怀疑是防火墙问题——我曾按照ufw-docker指南配置规则,但对防火墙规则不太熟悉。
TL;DR
当前环境中Docker部署的PHP与Nginx可正常通信,外部可访问应用并获取响应,但容器的部分HTTPS出站请求被阻断。
典型curl请求结果
$ curl https://raw.githubusercontent.com/ -v -4 * Host raw.githubusercontent.com:443 was resolved. * IPv6: (none) * IPv4: 185.199.109.133, 185.199.108.133, 185.199.111.133, 185.199.110.133 * Trying 185.199.109.133:443... * ALPN: curl offers h2,http/1.1 * TLSv1.3 (OUT), TLS handshake, Client hello (1): * CAfile: /etc/ssl/cert.pem * CApath: none * Connection timed out after 300004 milliseconds * closing connection #0 curl: (28) Connection timed out after 300004 milliseconds
在宿主机及本地环境的该容器中执行相同请求均正常。使用镜像为php:8.3-fpm-alpine,服务器系统为Ubuntu 24.04。
已尝试的排查手段
- 检查容器内DNS解析,曾在
daemon.json中添加DNS配置(现已移除) - 尝试使用纯净PHP镜像
- 删除所有DOCKER_USER相关iptables规则,允许所有流量:
iptables -F DOCKER-USER && iptables -A DOCKER-USER -j RETURN - 检查ufw规则(默认:拒绝入站,允许出站,拒绝路由),尝试允许路由
- 同时执行上述两项操作
- 检查MTU设置
- 查看
/var/log/syslog中是否有ufw阻断记录(无相关记录)
内容的提问来源于stack exchange,提问作者Evilkeeper




