我有一个VPC,其中有两个公用子网。
在React端,有一个代码是在fetch的帮助下调用Node API的。
当我将Nodejs的公共IP传递到fetch
的网址时,就会发生通信,
如果我将公共IP更改为节点实例专用IP,则不会发生通信。
我检查curl命令,即
curl http://NodeInstance public_ip:port/ -> return Response
curl http://NodeInstance private_ip:port/ -> return Response.
我不明白为什么私有Ip无法在React的API调用上起作用。我的curl命令工作正常。它返回公共IP和专用IP的响应。
真的很感谢任何帮助。
I am using Single security group for both the instance i.e
Type | protocol | port range | source
All TCP TCP 0-65535 0.0.0.0/0
SSH TCP 22 0.0.0.0/0
All ICMP-IPV$ All N/A 0.0.0.0/0
答案 0 :(得分:2)
即使您在同一VPC中运行React代码和NodeJs代码,运行该程序时,React代码也会被推送到浏览器。因此,当最终用户尝试使用该应用程序并开始通过专用IP从VPC外部的浏览器调用后端API时,该调用将不会到达Node服务器。一种解决方案是使用Nginx之类的东西来创建反向代理。 Nginx将位于VPC(公共子网1)内部,并处理浏览器和后端API之间的通信。
这是一个示例配置
server {
listen 80;
listen [::]:80;
server_name example.com;
location /api/getitems {
proxy_pass https://yourprivatip/api/getitems;
}
}
有关Nginx反向代理的更多信息:Link
注意:您还可以使用NodeJ创建反向代理。