2016-12-20 4 views
0

Мое приложение 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

В чем-то неправильное в конфигурации или я пропустил что-то? Спасибо

+0

Установили ли вы версию HTTP версии 1.1? Синтаксис конфигурации выглядит следующим образом: proxy_http_version 1,1 –

+0

Эй @AlessandroAlinone, Да я сделал, но это ничего –

ответ

1

Изменение URL, который использует клиент для соединения WS решить эту ..

Так что в моей стороне клиента я изменил эту строку: new WebSocket(location.origin.replace(/^http/, "ws")); этой линии: new WebSocket("ws://localhost/myapp");

Теперь работаю нормально!

+0

Кстати не изменить это моя конфигурация в случае, если кто-то нуждается в этом 'местоположение/MyApp { proxy_pass HTTP: // локальный: 8080 /; proxy_set_header X-Real-IP $ remote_addr; proxy_set_header Host $ host; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Обновление $ http_upgrade; proxy_set_header Соединение «обновление»; } ' –

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