AWS VPC环境下cURL请求正常但Axios请求失败问题求助
问题分析与解决办法
核心问题
你混淆了服务器内部网络和外部浏览器网络的差异:React服务器处于AWS VPC公有子网内,能直接访问私有子网的API服务器;但你的浏览器运行在本地电脑(外部网络),根本无法触达AWS私有子网的内网IP,因此浏览器发起的Axios请求根本没发送出去,API服务器自然不会产生日志。而React服务器上的curl属于VPC内部请求,不受这个限制,所以能正常响应。
具体解决步骤
修正前端Axios请求地址
不要让前端直接请求API的私有IP(比如10.0.1.100这类内网地址),改成请求React服务器的相对路径,比如/api。示例Axios代码:axios.get('/api/user')给React服务器配置反向代理
在React服务器上设置反向代理,把/api开头的请求转发到API服务器的私有IP。如果用Nginx,配置示例如下:server { listen 3000; server_name _; # 托管React静态文件 location / { root /path/to/react/build; try_files $uri $uri/ /index.html; } # 转发API请求到私有子网的API服务器 location /api { proxy_pass http://<API私有IP>:<API端口>; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }如果用Node.js/Express作为React服务器,也可以使用
http-proxy-middleware来配置代理。检查安全组规则
- 确认React服务器的安全组允许外部访问3000端口(入站规则:源
0.0.0.0/0,端口3000) - 确认React服务器的安全组允许出站到API服务器的服务端口(出站规则:目标为API服务器的私有IP段,端口对应API的运行端口)
- 确认React服务器的安全组允许外部访问3000端口(入站规则:源
跨域配置(可选)
如果后续给API服务器配置了公网访问(比如通过NAT网关或弹性IP),需要在API服务器上配置CORS规则,允许React服务器的公网IP/域名发起跨域请求。但当前场景下,反向代理是更安全的方案——API可以藏在私有子网中,无需暴露公网。
内容的提问来源于stack exchange,提问作者Joons
相关产品推荐
相关产品推荐

