web-dev-qa-db-fra.com

Échec de la connexion () de NodeJS (111: connexion refusée) lors de la connexion à l'amont

Je rencontre un problème aujourd'hui où tout à coup mon application Elastic Beanstalk m'envoie vers un 502 Bad Gateway page. Maintenant, j'ai rencontré ce problème dans le passé et la raison pour laquelle cela se produisait était que la commande Node n'a pas pu démarrer mon serveur. J'ai résolu ce problème en saisissant Node command: node main.js et je n'ai jamais rencontré ce problème au hasard ce matin. Tout d'un coup, il a cessé de fonctionner et je reçois cette erreur, dans mon journal des erreurs:

2015/03/31 13:07:17 [error] 697#0: *519 connect() failed (111: Connection refused) while connecting to upstream, client: 54.146.12.189, server: , request: "HEAD / HTTP/1.1", upstream: "http://127.0.0.1:8081/", Host: "54.152.12.19"
2015/03/31 13:07:17 [error] 697#0: *521 connect() failed (111: Connection refused) while connecting to upstream, client: 54.146.18.189, server: , request: "GET /clientaccesspolicy.xml HTTP/1.1", upstream: "http://127.0.0.1:8081/clientaccesspolicy.xml", Host: "54.152.12.19"
2015/03/31 13:16:02 [error] 697#0: *523 connect() failed (111: Connection refused) while connecting to upstream, client: 69.204.65.1321, server: , request: "GET /blog/the-differences-in-segmenting-your-data-by-users-and-sessions HTTP/1.1", upstream: "http://127.0.0.1:8081/blog/the-differences-in-segmenting-your-data-by-users-and-sessions", Host: "www.mywebsite.com"

Comment dois-je aborder la résolution de ce problème?

Voici mon main.js fichier:

//Load express
var express = require('express');
var app = express();
var router = express.Router(); // get an instance of the router
var bodyParser = require('body-parser'); // configure app to use bodyParser()
var mongoose = require('mongoose');
var passport = require('passport');
var flash = require('connect-flash');
var morgan = require('morgan');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var aws = require('aws-sdk');

app.use(bodyParser.urlencoded({ extended: true})); // get data from a POST method
app.use(bodyParser.json());
app.use(morgan('dev'));
app.use(cookieParser());


var port = process.env.PORT || 8080; // set the port

var DB_CONFIG = process.env.DB_CONFIGURATION;
var AWS_ACCESS_KEY = process.env.AWS_ACCESS_KEY;
var AWS_SECRET_KEY = process.env.AWS_SECRET_KEY;
var S3_BUCKET = process.env.S3_BUCKET;

var blogDB = require('./config/blogDB.js');
mongoose.connect(blogDB.url);




require('./config/passport.js')(passport);


app.set('view engine', 'ejs'); // set ejs as the view engine

app.use(express.static(__dirname + '/public')); // set the public directory

app.use(session({ secret: 'thisisatest' }));
app.use(passport.initialize());
app.use(passport.session());

app.use(flash());


var routes = require('./app/routes');

app.use(routes); // use routes.js


app.listen(port);
console.log('magic is happening on port' + port);
12
cphill

UNE 502 Bad Gateway une erreur suggère généralement que le proxy (Nginx dans le cas de NodeJS) ne peut pas trouver de destination vers laquelle acheminer le trafic.

En regardant vos journaux d'erreurs d'origine, il semble que nginx tente d'accéder à http://127.0.0.1:8081. Mais votre main.js a le port 8080 comme solution de secours, sauf si la variable ENV PORT est définie.

Je ne sais pas si vous définissez cette variable, mais essayez de basculer votre application NodeJS pour écouter sur le port 8081 et voir si cela aide.

De plus, j'ai écrit cette réponse qui explique la configuration de NodeJS pour le trafic, ce qui pourrait aider: configuration de nginx bizarre beanstalk élastique

Si vous avez toujours des problèmes, vous devrez peut-être donner plus d'informations sur votre configuration.

14
Josh Davis
upstream: "http://[::1]:5555/uploads/logo/df0944721b740b98c10a652ce0dd8296-640.jpg",

Si vous rencontrez des erreurs avec l'amont défini sur ipv6 -> [:: 1], remplacez localhost par 127.0.0.1 dans votre conf nginx.

server {
listen 80;

server_name mydomain.com;

location / {
    client_max_body_size 20M;
    client_body_buffer_size 128k;
    #proxy_pass http://localhost:5552;
    proxy_pass http://127.0.0.1:5552;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $Host;
    proxy_cache_bypass $http_upgrade;
}
}
4
keithics

Il est important d'ajouter la commande Node dans la section Configuration Modify software de votre application beanstalk, si votre application vous utilisez la commande start, utilisez-la comme commande node, "npm start" qui démarrera votre application correctement, cela se produit également lorsque vous utilisez le dossier et le fichier bin/www pour démarrer le serveur Nodejs.

1
Héctor BlisS

Sous beanstalk, accédez à la configuration, puis au logiciel, ajoutez la commande npm start on node. Ce seront vos paramètres par défaut. Nginx fonctionne bien avec ses paramètres par défaut

1
Ally Makongo

Je sais que c'est un super vieux post, mais je viens d'avoir le même problème avec le redémarrage de mon serveur de noeud par mon hébergeur. La réinitialisation du serveur a également provoqué l'arrêt de mongoDB.

Lors d'une utilisation permanente pour essayer de redémarrer les serveurs de noeud:

2018/04/12 06:49:32 [error] 23434#23434: *27 connect() failed (111: Connection refused) while connecting to upstream, client:

Les fichiers journaux n'indiquent pas qu'il s'agit spécifiquement d'une erreur avec mongo mais si vous essayez de démarrer le serveur manuellement:

node /server/server.js

Connection fails: MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017]

Une fois mongoDB redémarré, le serveur peut être redémarré:

Sudo mongod &

Et puis redémarrez simplement votre serveur et vous êtes prêt à partir.

1
Husk Rekoms

Réponse

Tous ces éléments n'indiquent aucune réponse du serveur http, ce qui signifie que votre serveur http ne répond pas aux demandes.

La partie exacte qui le signale dans les journaux est la suivante.

connect() failed (111: Connection refused) while connecting to upstream
server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:

Assurez-vous que vous avez pris des mesures pour démarrer cela et assurez-vous qu'il est en cours d'exécution au moment où l'erreur est générée.

Il peut également indiquer une erreur de configuration sur le fichier js du serveur http lui-même.

Pour avoir une meilleure idée, consultez les journaux d'erreurs dans /var/log/nginx/error.log. Si vous voyez des erreurs de connexion à votre serveur proxy, comme ci-dessus, c'est probablement le cas.

Pour voir s'il rencontre un problème de connexion à un proxy défini. Assurez-vous que le gestionnaire de processus de nœud est en cours d'exécution et configuré correctement sur ce port mandaté. par exemple. Si vous exécutez une application de nœud, recherchez pm2 ou le module de nœud que vous utilisez pour démarrer votre serveur http.

pm2 show

L'OA a supposé que votre sauvegarde était simplement mal configurée et n'était pas clair qu'un serveur http entier était nécessaire derrière. Certains utilisateurs tentent de lancer des applications qui contiennent des gestionnaires de tâches qui tentent de lancer des choses qui existent, et ne réalisent pas que le back-end entier n'était pas nécessaire ou en cours d'exécution, comme moi à l'heure actuelle.

0
blamb