Я пытаюсь прокси передать приложение node.js-socket.io с помощью nginx.
Клиент представляет собой HTML-файл с некоторым количеством JavaScript;
<html>
<head>
<script src="socket.io.js"></script>
<script>
var socket = io('http://localhost:80');
socket.on('welcome', function(data){
console.log('Server says:' + data);
socket.emit('client-response', 'thank you!');
});
</script>
</head>
<body>
Socket.io
</body>
</html>
А серверный блок, который должен проходить через прокси в файле nginx.conf, таков:
server {
listen 80;
listen [::]:80;
#root /usr/share/nginx/html;
include /etc/nginx/default.d/*.conf;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass "http://localhost:2156";
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
У меня установлено приложение node.js в порту "2156".
Когда я проверяю это, клиент пытается получить доступ к socket.io через порт 80 и завершается неудачно с ошибкой 404 (поскольку предполагалось, что nginx передаст прокси на порт 2156, но это не так).
Что мне здесь не хватает?