使用nginx的错误网关502 Google App Engine | 节点JS

Nod*_*bie 30 google-app-engine nginx node.js

我正在使用App Engine在Google Cloud Platform上托管Web应用程序,我使用的是ExpressJS和MongoDB,它位于mLab上.

一切顺利到2017年1月1日.我之前有过vm:true,现在被迫将env更改为flex.现在我用nginx得到了502错误的网关错误.App引擎不允许我们更改nginx配置文件.

我曾尝试过这篇文章的建议:使用NodeJS的Google App Engine 502(Bad Gateway)但仍然无效.

由于某种原因,我有另一个应用程序与app引擎完全相同的设置,它的工作完美.

任何建议将不胜感激.谢谢.

Dee*_*til 18

应该始终收听端口8080,谷歌转发所有请求从80到8080 https://cloud.google.com/appengine/docs/flexible/custom-runtimes/build#listen_to_port_8080


SRA*_*VAN 14

检查日志中是否存在任何部署错误

$ gcloud app logs read
Run Code Online (Sandbox Code Playgroud)

我在本教程提供的代码中遇到了类似的问题(https://cloud.google.com/nodejs/getting-started/authenticate-users)

并发现缺少依赖性.我修复了缺少的依赖项,部署了应用程序并且运行正常.

问题详情:https://github.com/GoogleCloudPlatform/nodejs-getting-started/issues/106

  • 谢谢@SRAVAN这将我引向我的问题 (2认同)

Car*_*lez 6

将主机设置为0.0.0.0

端口8080由引擎默认设置。事实上,您无法定义环境变量,PORT因为它是保留的。

运行下一个命令(如@sravan所述)

gcloud app logs read tail
Run Code Online (Sandbox Code Playgroud)

并确保它看起来像这样,

[Sun May 27 2018 10:32:44 GMT+0000 (UTC)] serving app on 0.0.0.0:8080
Run Code Online (Sandbox Code Playgroud)

干杯


Rut*_*ren 5

我在 Express 上遇到了同样的问题。为我解决的是不为应用程序提供 IP 地址。

所以我的旧代码是:

var ip = "127.0.0.1";
var port = "8080";
var server = http.createServer(app);
server.listen(port, ip);
Run Code Online (Sandbox Code Playgroud)

这将导致应用引擎中的 502。

删除 ip 是我的解决方案。

server.listen(port);
Run Code Online (Sandbox Code Playgroud)


Ada*_*dam 1

502 不一定是 nginx 本身的错误,它最常发生在 nginx 代理无法与您的应用程序容器通信时(通常是因为您的应用程序无法启动)。如果您在迁移到“env: flex”后收到 502,这很可能是由于您的应用程序需要进行一些代码更改,如升级到最新的 App Engine 灵活环境版本中所述。

检查应用程序日志中来自 NPM 的错误也将有助于诊断启动失败的确切原因。