You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

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

火山引擎 最新活动