AWS EB服务器调用SMS服务商CURL接口无响应问题求助
问题
我有如下CURL命令:
curl POST 'https://www.XXXX.com/sendsms.php' ....
这是一个短信服务商接口,该命令在本地电脑上能正常运行并获取响应,但在AWS Elastic Beanstalk(EB)服务器上通过SSH执行时,长时间无响应;而在未使用EB的EC2微型服务器上执行则一切正常。
我的应用其他功能均正常,仅该短信服务接口调用异常。当前使用环境为AWS EB PHP 8.1 running on 64bit Amazon Linux 2/3.4.0,EB服务器的安全组配置如下:
- 入站规则:

- 出站规则:

排查与解决建议
1. 基础网络连通性验证
在EB服务器上执行以下命令,定位网络层面问题:
# 验证目标域名的DNS解析是否正常 nslookup www.XXXX.com # 测试HTTPS端口(443)的TCP连通性 telnet www.XXXX.com 443 # 若telnet不可用,用nc命令替代 nc -zv www.XXXX.com 443
如果DNS解析失败,说明EB环境的DNS配置存在问题;如果端口不通,再进一步排查网络限制。
2. 检查EB环境的额外网络限制
EC2能正常访问不代表EB可以,EB可能有额外的网络配置:
- 确认EB环境所在VPC是否配置了网络ACL,需保证出站规则允许访问目标短信服务商的443端口(网络ACL是无状态的,入站和出站都要配置)
- 查看EB环境是否启用了代理服务器,如果有,执行curl时需要添加代理参数:
curl -x http://代理IP:端口 POST 'https://www.XXXX.com/sendsms.php' .... - 检查EB是否配置了VPC端点,是否限制了外部HTTPS流量的出站
3. 用调试模式运行curl定位问题
在EB服务器上执行curl时添加-v参数,查看请求的详细过程,确认卡在哪个环节(比如TCP连接建立、SSL握手、请求发送后等待响应):
curl -v POST 'https://www.XXXX.com/sendsms.php' ....
重点关注是否有SSL证书验证失败、连接超时等提示信息。
4. 安全组配置交叉验证
从截图看安全组出站规则是允许所有流量(0.0.0.0/0),但仍需确认:
- 该安全组是否正确关联到EB的EC2实例
- 安全组的出站规则是否真的生效(可通过EB控制台查看实例关联的安全组)
5. 排查PHP环境的curl配置
如果是通过PHP代码调用curl而非SSH命令,还需检查:
- 查看
php.ini中的curl.cainfo配置,确认是否指定了正确的CA证书路径,避免因SSL证书验证失败导致请求停滞 - 确认PHP的curl扩展已启用,且未被配置代理限制
内容的提问来源于stack exchange,提问作者rAAA
相关产品推荐
相关产品推荐

