首页 > 解决方案 > 无法从外部访问 Google App Engine 实例

问题描述

我正在使用 cloud shell 在 Google Cloud Services 上运行节点 JS 应用程序。我已经使用gcloud app deploy进行了部署,一切都报告为成功。如果我使用gcloud app logs tail -s default我可以看到日志,它说我的应用程序正在侦听端口 3000,这是我从我的应用程序中看到的第一条调试消息。

当我最后调用没有端口的端点时,即

https://myapp.appspot.com/myendpoint

我得到一个错误,

“获取 /myendpoint” 502

如果我尝试使用端口 3000,即

https://myapp.appspot.com:3000/myendpoint

请求只是超时,我没有从 shell 收到日志消息。

我在防火墙上打开了 3000 端口,而我的 app.yaml 是,

runtime: nodejs
env: flex
service: default

manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

更新1:

我还尝试向我的 app.yaml 添加转发端口,

network:
  forwarded_ports:
    - 3000/tcp  

并在 VPC 防火墙中允许端口 3000,但这似乎没有什么区别。

更新 2:

我可以通过 SSH 进入实例并使用wget http://127.0.0.1:3000/myendpoint命令访问端点,但仍然没有外部访问权限。

更新 3:

我也试过端口 443,监听 IP 0.0.0.0。但它似乎绑定到 IPV6 ip 地址 0 并将端口更改为 8443(不知何故)。这简直是​​疯了……

标签: node.jsgoogle-app-enginegoogle-cloud-platform

解决方案


我通过将我的服务绑定到端口 8080 并从我的 app.yaml 中删除“服务”字段解决了这个问题。默认情况下,外部呼叫都路由到端口 8080。

外部呼叫没有指定端口。


推荐阅读