node.js - 两个公共子网无法与私有 ip 通信
问题描述
我有一个 VPC,其中有两个公共子网。
- 反应(公共子网 1)
- 节点(公共子网 2)
在 React 方面,有一段代码在 fetch 的帮助下调用 Node API。
当我将 Nodejs 的公共 IP 传递到通信的 url 时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 的响应。
任何帮助都非常感谢。
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
解决方案
即使您在同一个 VPC 中运行 React 代码和 NodeJs 代码,当您运行程序时,React 代码也会被推送到浏览器。因此,当最终用户尝试使用该应用程序并开始通过私有 IP 从您的 VPC 外部的浏览器调用后端 API 时,该调用将不会到达节点服务器。一种解决方案是使用 Nginx 之类的东西创建反向代理。Nginx 将位于 VPC(公共子网 1)内并处理浏览器和后端 API 之间的通信。
这是一个示例配置
server {
listen 80;
listen [::]:80;
server_name example.com;
location /api/getitems {
proxy_pass https://yourprivatip/api/getitems;
}
}
更多关于 Nginx 反向代理:链接
注意:您还可以使用 NodeJs 创建反向代理。
推荐阅读
- java - Dropbox 图标未出现在共享托盘中
- c# - 如何在所有条目都填满之前禁用按钮?
- c++ - 将 24 位“.bmp”图像转换为黑白/单色图像的可能算法是什么?
- c# - google oAuth 尝试重定向到与我的应用程序 url 不同的随机 uri
- javascript - 为什么按引用传递似乎在这段代码中不起作用,而 obj1.value 仍然是函数的外部
- excel - 使用单元格 B3 中的日期值重命名工作簿中的多个工作表
- .net-core - 如何将 EWS API 与 Console App Net Core 一起使用
- electron - 可以在“开发模式”中写入文件,但不能在电子中写入“分布式模式”
- google-cloud-platform - 带有 TCP 负载均衡器的 Cloud VPN
- javascript - 纸张自动完成未显示任何结果