python - 无法在 Google Cloud Platform 上的保留静态地址上查看烧瓶应用
问题描述
我没有通过 Gcloud 命令行进行通常的部署方式,而是简单地 sshed GCP Ubuntu 实例并通过 WinSCP 部署我的烧瓶应用程序,方法是将文件传输到我创建的 Ubuntu 实例上。我能够让它像这样运行:
我还保留了一个静态地址,以便我可以允许用户查看 Flask 应用程序。
但是,当我尝试访问外部 IP 地址时,GCP 拒绝连接,我无法查看我的烧瓶应用程序。
我可能做错了什么?
解决方案
没有 VPC 防火墙规则允许进入 tcp/8080 上的实例的入口流量。
第一步:在你的 GCE 实例上添加一个网络标签,allow-8080-ingress
.
第二步:在 web 菜单下,转到VPC Network
- Firewall
-Create Firewall Rule
并创建一个具有以下属性的新规则:
- 名称:随便8080
- 网络: [选择您的实例所属的网络]
- 流量方向:入口
- 比赛行动:允许
- 目标:指定的目标标签
- 目标标签: allow-8080-ingress(您在实例上添加的网络标签)
- 源过滤器: IP 范围
- 源 IP 范围: 0.0.0.0/0 <<== 这将允许来自任何 IP 的传入流量。您可能更具体,选择更小的范围甚至特定的 IP 地址。
- 指定协议和端口:检查tcp并添加8080
你没有附加你的烧瓶代码,但如果你像这样启动它,它就会工作:
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)
...能够通过公共 IP 访问它:
推荐阅读
- node.js - 如何准确测量 node.js 中的响应时间?
- java - RecyclerView,数据定位错误
- python - float() 参数必须是字符串或数字,而不是“时间戳”
- c++ - 无法在 C++ 11 中初始化联合
- html - CSS 边框底部属性无效
- css - 如何在css文件中找到multipe类...
- typescript - 使用反应式表单验证时出现 Ionic 4 多个错误
- java - 我应该为 netbeans 使用什么 JDK?
- linux - 如果对`kill`的调用导致为调用进程生成信号并且信号未被阻塞,会发生什么?
- xcode - 使用 CGRect 或使用约束以编程方式定位视图有什么区别?