node.js - 无法从外部访问 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(不知何故)。这简直是疯了……
解决方案
我通过将我的服务绑定到端口 8080 并从我的 app.yaml 中删除“服务”字段解决了这个问题。默认情况下,外部呼叫都路由到端口 8080。
外部呼叫没有指定端口。
推荐阅读
- sql - 是否有一条 SQL 语句可以为从另一列分组产生的每个组从表中返回一列的最大值?
- javascript - Axios 标头作为有效负载发送
- python - Python:在 for 循环中仅打印 1 行时遇到问题
- ios - React Native:将 PDF 下载到本地存储 (ios)
- ruby-on-rails - Ruby on Rails 6 无法使用 webpack 部署到 heroku
- c++ - std::enable_if ... else aka typename_if_else
- amadeus - Amadeus Master Pricer Travel Board - 按运营商搜索?
- java - 弹簧靴。@Transactional 方法调用 @Transactional(readonly=true) 方法
- react-native - 发出获取请求以从谷歌图书 api 获取图书列表
- reactjs - 收到我的函数未定义的错误