You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS VPC环境下cURL请求正常但Axios请求失败问题求助

问题分析与解决办法

核心问题

你混淆了服务器内部网络和外部浏览器网络的差异:React服务器处于AWS VPC公有子网内,能直接访问私有子网的API服务器;但你的浏览器运行在本地电脑(外部网络),根本无法触达AWS私有子网的内网IP,因此浏览器发起的Axios请求根本没发送出去,API服务器自然不会产生日志。而React服务器上的curl属于VPC内部请求,不受这个限制,所以能正常响应。

具体解决步骤

  1. 修正前端Axios请求地址
    不要让前端直接请求API的私有IP(比如10.0.1.100这类内网地址),改成请求React服务器的相对路径,比如/api。示例Axios代码:

    axios.get('/api/user')
    
  2. 给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来配置代理。

  3. 检查安全组规则

    • 确认React服务器的安全组允许外部访问3000端口(入站规则:源0.0.0.0/0,端口3000)
    • 确认React服务器的安全组允许出站到API服务器的服务端口(出站规则:目标为API服务器的私有IP段,端口对应API的运行端口)
  4. 跨域配置(可选)
    如果后续给API服务器配置了公网访问(比如通过NAT网关或弹性IP),需要在API服务器上配置CORS规则,允许React服务器的公网IP/域名发起跨域请求。但当前场景下,反向代理是更安全的方案——API可以藏在私有子网中,无需暴露公网。

内容的提问来源于stack exchange,提问作者Joons

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 07:55:24