Nginx + Socket.io + Proxy

Прочитав несколько статей, я все еще не могу настроить соединение с socket.io через прокси-сервер nginx.

Ниже мой nginx конфигурация:

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

location ~* \.io {
    proxy_pass http://localhost:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
}

Вот как мой node.js Экспресс-сервер подключен:

const express = require('express');
const app = express();
const http = require('http').Server(app);
const io = require('socket.io')(http);

Кажется, все работает нормально на моей локальной машине разработчика, т.е. Я вижу свое сообщение в журнале onConnection, и все коммуникации также работают хорошо.

Во время работы мой браузер получает все действительные ответы, но я не вижу никаких журналов onConnection, и связь через сокет не работает.

Запросы вкладки сети Chrome (нажмите, чтобы открыть изображение в полном размере)

1 ответ

Возможно, порт 3000 заблокирован брандмауэром на вашем производственном сервере. Вы можете проверить, открыт ли он, выполнив следующую команду с вашего локального компьютера разработчика.

telnet <ip-address-of-your-production-server> 3000

Это попытается открыть соединение с портом 3000 на производственном сервере. Если вы получаете тайм-аут или отказываете, порт не открыт.

Другие вопросы по тегам