@source2003

Настройка портов nginx для socket.io?

Не знаю, правильно ли я сформулировал вопрос, но сейчас постараюсь объяснить проблему.

На сервере работает nginx, который перенаправляет домены на разные порты.
Задумывалось это так: все домены будут идти на 80 порт, а домены, на которых должны запускаться приложения на Node.js будут идти на порты 8080, 8000, 3000, 1337 и т.д., для того, чтобы запустить на одном сервере несколько приложений ноды, и сайт на PHP.

Выглядело это так:

server {

	listen 80 default_server;
	server_name localhost;
}

server {

	listen 80;
	server_name example.com;

	location / {
		proxy_pass http://IP_ADRESS:1337;
	}

}


Все сайты идут на 80 порт, а example.com на порт 1337, там и запущено приложение на Node.js.

Вот в чем проблема:

Когда потребовалось использовать Socket.IO, то на сайте example.com, который перенаправляется на IP_ADRESS:1337 была ошибка:
WebSocket connection to 'ws://example.com/socket.io/?EIO=3&transport=websocket&sid=y1fxSfbvA-eqW6ayAAAZ' failed: Error during WebSocket handshake: Unexpected response code: 400

Но когда я ставлю сайт example.com на 80 порт, т.е. по адресу example.com, открывается IP_ADRESS:80, такой ошибки нет и всё работает нормально.

Как же мне сделать, чтобы я мог запускать приложения ноды на разных портах и работать с socket.io?
  • Вопрос задан
  • 687 просмотров
Пригласить эксперта
Ответы на вопрос 1
erniesto77
@erniesto77
oop, rb, py, php, js
попробуйте что то вроде этого

upstream first_server {
    server 127.0.0.1:3000;
}

upstream second_server {
    server 127.0.0.1:1337;
}

  server {
    listen 80;
    server_name domain1.com;
    location / {
        proxy_pass http://first_server;
  }
}

  server {
    listen 80;
    server_name domain2.com;
    location / {
        proxy_pass http://second_server;
  }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы