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