Как настроить веб-сокет "ws" на сервере nginx nodejs? - PullRequest
0 голосов
/ 26 ноября 2018

В настоящее время я пытаюсь развернуть свое приложение NODEJS на удаленном сервере nginx debian.Это работает очень хорошо в localhost.Но у меня есть некоторые трудности, чтобы заставить websocket работать на удаленном сервере nginx.Я использую модуль "ws" nodejs.

Вот как я объявил свою сторону сервера websocket:

var WebSocket_ = require('ws');
var wss = new WebSocket_.Server({port: 40510});

И вот как я открыл свою сторону клиента websocket:

var ws = new WebSocket('ws://localhost:40510');

Я знаю, что мне нужно настроить / etc / nginx / sites-available / default на моем Nginx VPS:

Нужно ли добавлять местоположение блока веб-сокета и определять конкретный проксипасс?Если да, то как?

Должен ли я заменить var "ws = new WebSocket ('ws: // localhost: 40510');"по другой инструкции в моем клиентском коде?

Заранее спасибо за ответы!

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Большое спасибо

Я уже использую местоположение блока с обратным перенаправлением прокси:

    location / {


           proxy_pass http://localhost:8888;
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection 'upgrade';
           proxy_set_header Host $host;
           proxy_cache_bypass $http_upgrade;


            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            # try_files $uri $uri/ =404;
    }

не следует ли вместо этого использовать мое доменное имя?Что-то вроде:

var ws = new WebSocket('http://vincentfritz-dev.fr/ws');

?

0 голосов
/ 26 ноября 2018

Если у вас уже есть серверный блок, поместите его внутрь (обычно внутри sites-available или nginx.conf):

location /ws {
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_pass http://localhost:40510;
}

Теперь, в зависимости от ваших прослушивающих портов Nginx, вы настроите свой IP-адрес клиента /Порт (по умолчанию Nginx прослушивает порт 80)

var ws = new WebSocket('ws://localhost:80/ws');

Полный файл конфигурации (пример):

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
    fastcgi_buffers 64 4K;

    server {
        listen       localhost:80 default_server;
        server_name  localhost;

        # Logs
        access_log /var/log/nginx/main.access.log;
        error_log /var/log/nginx/main.error.log;

        # Websocket
        location /ws {
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
            proxy_pass http://localhost:40510;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...