node.js - pricing - 502 Bad Gateway con nginx | Google App Engine | Nodo JS
google app engine standard environment (5)
Estoy hospedando la aplicación web en Google Cloud Platform con App Engine y estoy usando ExpressJS y MongoDB, que está alojado en mLab.
Todo funcionó bien hasta el 01/01/2017. Tuve vm: cierto antes y ahora me vi obligado a cambiar el env a flex. Ahora estoy recibiendo 502 errores de pasarela incorrectos con nginx. El motor de aplicaciones no nos permite cambiar el archivo de configuración nginx.
He intentado la sugerencia de este post: Google App Engine 502 (Bad Gateway) con NodeJS pero todavía no funciona.
Por alguna razón, tengo otra aplicación con exactamente la misma configuración en el motor de la aplicación y funciona perfectamente.
Cualquier sugerencia sera muy apreciada. Gracias.
Echa un vistazo a los registros para los errores de implementación
$ gcloud app logs read
Me he encontrado con un problema similar con el código proporcionado por este tutorial ( https://cloud.google.com/nodejs/getting-started/authenticate-users )
Y encontró que faltaba una dependencia. Arreglé la dependencia que falta y la aplicación está implementada y funciona bien.
Detalles sobre el tema: https://github.com/GoogleCloudPlatform/nodejs-getting-started/issues/106
Establecer el anfitrión a 0.0.0.0
El puerto 8080
está configurado por defecto por el motor. De hecho, no puede definir el entorno var PORT
ya que está reservado.
Ejecuta el siguiente comando (como lo menciona @sravan)
gcloud app logs read tail
y asegúrate de que se vea así,
[Sun May 27 2018 10:32:44 GMT+0000 (UTC)] serving app on 0.0.0.0:8080
Aclamaciones
La aplicación siempre debe escuchar el puerto 8080, Google reenvía todas las solicitudes de 80 a 8080 https://cloud.google.com/appengine/docs/flexible/custom-runtimes/build#listen_to_port_8080
Tuve el mismo problema con Express. Lo que lo resolvió para mí fue no proporcionar una dirección IP para la aplicación.
Así que mi antiguo código sería:
var ip = "127.0.0.1";
var port = "8080";
var server = http.createServer(app);
server.listen(port, ip);
Esto daría lugar a un 502 en el motor de la aplicación.
Eliminar la ip fue la solución para mí.
server.listen(port);
Un 502 no es necesariamente un error con nginx en sí mismo, puede suceder con mayor frecuencia cuando el proxy nginx no puede comunicarse con el contenedor de su aplicación (generalmente porque su aplicación no se inició). Si obtiene un 502 después de migrar a ''env: flex'', es muy probable que esto se deba a algunos cambios de código necesarios en su aplicación, como se menciona en Actualización a la última versión de App Flexible Flexible Environment Release .
La comprobación de los registros de la aplicación en busca de errores de NPM también ayudará a diagnosticar la razón exacta del inicio fallido.