AWS环境下Httpd反向代理API Gateway报错:读取远程服务器错误
解决Httpd反向代理到API Gateway的Proxy Error问题
咱们一步步拆解问题,找到解决办法:
1. 核心问题:错误的API Gateway目标域名
你当前配置里的ProxyPass目标是https://apigateway.amazonaws.com/,这是API Gateway的公网通用域名,但你用了VPC Link,说明你的API应该是私有API(Private API),这时候必须使用API Gateway的私有专属域名,而不是公网域名。
私有API的域名格式是:{你的API ID}.execute-api.{区域}.amazonaws.com,比如abc123.execute-api.us-east-1.amazonaws.com。你可以在API Gateway控制台的「设置」页面找到这个域名。
2. 修正Httpd代理配置
把ProxyPass和ProxyPassReverse的目标替换成你的API私有域名,还要加上你的API部署阶段(比如/prod),同时调整路径匹配逻辑。下面是修正后的配置示例:
<VirtualHost *:443> # Use HTTP Strict Transport Security to force client to use secure connections only Header always set Strict-Transport-Security "max-age=300; includeSubDomains; preload" ServerAdmin administrator@test.net ServerName www.test.net ServerAlias test.net DocumentRoot /var/www/html/test.net/public_html/ SSLEngine on SSLCertificateFile /etc/httpd/selfsigned/server.crt SSLCertificateKeyFile /etc/httpd/selfsigned/server.key SSLProxyEngine On # 替换成你的API私有域名+部署阶段 ProxyPass /myapi/ https://abc123.execute-api.us-east-1.amazonaws.com/prod/ retry=1 acquire=3000 timeout=24000 Keepalive=On ProxyPassReverse /myapi/ https://abc123.execute-api.us-east-1.amazonaws.com/prod/ # 注释掉ProxyPreserveHost(私有API不需要传递你的域名作为Host头) # ProxyPreserveHost On </VirtualHost>
3. 验证EC2到API Gateway的网络连通性
即使VPC Link显示正常,也要确认EC2能直接访问API的私有域名:
- 登录EC2实例,执行
curl -v https://{你的API私有域名}/prod/myapi(替换成你的实际路径) - 如果curl返回Lambda的响应,说明网络没问题;如果失败,排查以下点:
- EC2所在子网的路由表是否有指向VPC Link的条目
- EC2的安全组是否允许出站443端口到API Gateway的私有IP范围
- API Gateway私有端点的安全组是否允许EC2的IP访问443端口
- 确认VPC的DNS设置(启用
enableDnsSupport和enableDnsHostnames),确保能解析API私有域名
4. 检查Httpd模块是否加载
确保Httpd已经加载了代理和SSL所需的模块:
- 执行
httpd -M查看模块列表,确认proxy_http_module和ssl_module存在 - 如果缺失,需要启用这些模块(比如在CentOS/RHEL中,编辑
/etc/httpd/conf.modules.d/00-proxy.conf和00-ssl.conf,确保对应的LoadModule行没有被注释)
5. 临时排查证书验证问题(可选)
如果网络连通但仍然报错,可能是证书信任问题,可以临时添加以下配置跳过验证(不建议长期使用,最好确保EC2信任AWS的根证书):
SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off
修改配置后,重启Httpd服务:systemctl restart httpd,再测试请求/myapi/应该就能正常转发到Lambda了。
内容的提问来源于stack exchange,提问作者MrGildarts
相关产品推荐
相关产品推荐

