J'héberge l'application Web sur Google Cloud Platform avec App Engine et j'utilise ExpressJS et MongoDB, qui est hébergé sur mLab.
Tout a bien fonctionné jusqu'au 1/1/2017. J'avais vm: true avant et maintenant j'étais obligé de changer l'env pour fléchir. Maintenant, je reçois une erreur de passerelle 502 avec nginx. Le moteur d'applications ne nous permet pas de modifier le fichier de configuration nginx.
J'avais essayé la suggestion de cet article: Google App Engine 502 (passerelle incorrecte) avec NodeJS mais ne fonctionne toujours pas.
Pour une raison quelconque, j'ai une autre application avec exactement le même paramètre sur le moteur d'application et cela fonctionne parfaitement.
Toute suggestion sera grandement appréciée. Je vous remercie.
l’application doit toujours écouter le port 8080, Google transmet toutes les demandes de 80 à 8080 https://cloud.google.com/appengine/docs/flexible/custom-runtimes/build#listen_to_port_8080
consulter les journaux pour les erreurs de déploiement
$ gcloud app logs read
J'ai rencontré un problème similaire avec le code fourni par ce tutoriel ( https://cloud.google.com/nodejs/getting-started/authenticate-users )
Et trouvé qu'il y avait une dépendance manquante. J'ai corrigé la dépendance manquante et l'application est déployée et fonctionne bien.
Détails dans le numéro: https://github.com/GoogleCloudPlatform/nodejs-getting-started/issues/106
Un n ° 502 n'est pas nécessairement une erreur avec nginx lui-même, il peut généralement arriver lorsque le proxy nginx ne peut pas communiquer avec le conteneur de votre application (généralement parce que votre application n'a pas pu démarrer). Si vous obtenez une version 502 après avoir migré vers 'env: flex', cela est probablement dû aux modifications de code nécessaires à votre application, comme indiqué dans Mise à niveau vers la dernière version de l'environnement flexible App Engine .
La vérification de vos journaux d'application pour rechercher les erreurs de NPM aidera également à diagnostiquer la raison exacte de l'échec du démarrage.
J'ai eu le même problème avec Express. Ce qui a résolu le problème pour moi était de ne pas fournir d'adresse IP pour l'application.
Donc, mon ancien code serait:
var ip = "127.0.0.1";
var port = "8080";
var server = http.createServer(app);
server.listen(port, ip);
Cela se traduirait par un moteur d'application 502.
Enlever l'ip était la solution pour moi.
server.listen(port);
Définissez l'hôte sur 0.0.0.0
Le port 8080
est défini par défaut par le moteur. En fait, vous n'êtes pas en mesure de définir l'environnement var PORT
car il est réservé.
Exécutez la commande suivante (comme mentionné par @sravan)
gcloud app logs read tail
et assurez-vous qu'il ressemble à ceci,
[Sun May 27 2018 10:32:44 GMT+0000 (UTC)] serving app on 0.0.0.0:8080
À votre santé