我正试图在谷歌云虚拟机实例上部署一个无法启用公共IP的响应式应用程序。反应式应用程序根据用户输入达到flask RESTful API端点。
应用程序和参数:
- Flask应用程序(主机="0.0.0.0",端口=5000(
- 反应式应用程序(主机="0.0.0.0",端口=3000(
问题:我尝试在同一虚拟机实例上托管flask应用程序,但反应式应用程序无法到达API端点。
工作(仅限本地(:当反应式应用程序和烧瓶应用程序在本地运行时,(本地(API端点被命中。
不工作:
- 我尝试在GCP上部署应用程序,并端口转发反应(http://localhost:3000)和烧瓶应用程序(http://localhost:5000),但烧瓶应用程序未命中
- 我在本地(笔记本电脑上(运行了反应式应用程序,并转发了烧瓶应用程序。令人惊讶的是,本地反应式应用程序能够达到GCP上的API端点。但目标是让GCP应用程序达到RESTful API
- 我为主机尝试了不同的值("localhost"、"127.0.0.1"(,并重复了1、2
Flask调试器未记录API调用。不幸的是,Chrome的网络日志没有跟踪从反应式应用程序发送到RESTful API的请求。因此,我无法从反应式应用程序获取有关请求的更多信息。
当两者都部署在GCP虚拟机实例上时,有没有办法从反应式应用程序中访问RESTful API?我可以将flask应用程序移动到另一个VM实例,但不能启用公共IP,也不能修改防火墙规则。
注意:不是这个问题的重复,因为公共IP无法启用。
请验证以下内容:
- 确保GCP防火墙允许通信
- 验证虚拟机实例中的本地防火墙是否也允许流量;检查
sudo netstat-tanp
端口实际上是打开的,并绑定到0.0.0.0/0或实例的内部IP。
@GagandeepT的回答将提供初步诊断,以检查主机和端口是否正确指定。我终于发现了潜在的问题——代理重定向了所有的http和https流量,尽管API调用在技术上是"本地的"。