2015-03-31 4 views
3

У меня сегодня проблема, когда внезапно мое приложение Elastic Beanstalk отправляет меня на страницу 502 Bad Gateway. Теперь я столкнулся с этой проблемой в прошлом и причина, по которой это происходит, состоит в том, что команда Node не могла запустить мой сервер. Я исправил это, введя Node command: node main.js, и я никогда не сталкивался с этим вопросом до тех пор, пока это не случайно. Внезапно он перестал работать, и я получаю эту ошибку, в моем журнале ошибок:NodeJS connect() не удалось (111: соединение отказано) при подключении к восходящему потоку

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" 

Как я должен подойти к решению этого вопроса?

Вот мой main.js файл:

//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); 

ответ

6

502 Bad Gateway ошибка обычно свидетельствует о том, что прокси-сервер (Nginx в случае NodeJS в) не может найти пункт назначения, чтобы маршрутизировать трафик.

Рассматривая исходные журналы ошибок, похоже, что nginx пытается перейти на http://127.0.0.1:8081. Но ваш main.js имеет порт 8080 в качестве резерва, если не установлена ​​переменная ENV PORT.

Я не знаю, устанавливаете ли вы эту переменную, но попробуйте переключить приложение NodeJS, чтобы прослушивать порт 8081 и посмотреть, поможет ли это.

Кроме того, я написал этот ответ, объясняющие настройки NodeJS для трафика, который может помочь: elastic beanstalk weird nginx configuration

Если у вас есть вопросы, вы, возможно, придется дать некоторую информацию о вашей установке.

0

Ответ

Они указывают на нет ответа HTTP-сервера, а это значит, ваш сервер HTTP не отвечает на запросы.

Точная часть, указывающая это в журналах, следующая.

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

Удостоверьтесь, что вы предприняли шаги для его запуска и убедитесь, что он запущен в данный момент в момент возникновения ошибки.

Он также может указывать на ошибку конфигурации самого файла js-сервера http-сервера.

Чтобы получить представление об ошибке, просмотрите журналы ошибок в /var/log/nginx/error.log. Если вы видите ошибки соединения с вашим прокси-сервером, например, выше, то это, вероятно, так.

Чтобы узнать, есть ли у него проблемы с подключением к прокси-серверу, который был определен. Убедитесь, что диспетчер процессов узла запущен и правильно настроен на этом прокси-порту. например Если вы запустите приложение узла, найдите pm2 или какой-либо узел, который вы используете для запуска своего http-сервера.

pm2 show 

ОА предполагается скопированное был просто неправильно, и не было ясно, что весь сервер HTTP был нужен позади него. Некоторые пользователи пытаются запускать приложения, в которых есть диспетчеры задач, которые пытаются запустить все, что было сделано, и не понимают, что весь back-end не нужен или работает, как и я в данный момент.

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

Если у вас возникли ошибки с входным набором для ipv6 -> [:: 1], замените LOCALHOST на 127.0.0.1 в вашем 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; 
} 
} 
Смежные вопросы

 Смежные вопросы