Мое приложение Node.js работает на localhost:8080
Эти файлы конфигурации сервера:Не удается настроить Nginx в качестве обратного прокси для WebSocket
var express = require('express');
var http = require('http');
var app = express();
var WS = require('ws');
var config = require('./config/main');
var Client = require('./client');
// HTTP
var server = http.createServer(app);
app.use(express.static(__dirname + '/../client/build/'));
server.listen(config.httpPort, function() {
console.info('HTTP listening on *:' + config.httpPort);
});
// WebSocket
var ws = new WS.Server({server: server});
console.info('Websocket server created');
ws.on('connection', function(ws) {
var client = new Client(ws);
console.log('New conection:', client.id);
});
и
module.exports = {
/* HTTP PORT */
httpPort: process.env.PORT || 8080,
/* WebSocket PORT */
wsPort: process.env.PORT || 8081
};
Так что я пытаюсь запустите его с помощью обратного прокси-сервера Nginx:
location /myapp {
proxy_pass http://localhost:8080/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
Сейчас, когда я ссылаюсь на localhost/myapp
страница выглядит нормально, при этом все статические файлы загружаются, но похоже, что соединение с WebSocket отсутствует. PS: I am Nginx V 1.11.7
В чем-то неправильное в конфигурации или я пропустил что-то? Спасибо
Установили ли вы версию HTTP версии 1.1? Синтаксис конфигурации выглядит следующим образом: proxy_http_version 1,1 –
Эй @AlessandroAlinone, Да я сделал, но это ничего –