Page 1 of 1

Настройка для работы websocket (wss)

Posted: Tue Aug 29, 2017 2:18 pm
by Garik
Добрый день.

Имеется рабочий websocket-сервер. При обращении по обычному соединению ws://site.ru:8088 подключается без проблем. Но никак не удается настроить безопасное соединение wss://site.ru:8088. Сертификат Let's Encrypt к домену прикручен, сайт по https:// успешно открывается, на сертификат не ругается.

Не подскажете, что и где нужно прописать в конфигах, дабы проходило соединение по wss://?
Стоит Ubuntu 16.04 + VestaCP

Re: Настройка для работы websocket (wss)

Posted: Tue Aug 29, 2017 6:58 pm
by Garik
В общем, проблема решилась.
Если кому то пригодится.

Заменить:
<ip_address> - ваш IP
domen_name.ru - ваш домен
8088 - ваш порт на котором висит websocket-сервер

WS-сервер будет доступен из клиента как: wss://domen_name.ru/ws/

Code: Select all

#/home/admin/conf/web/snginx.conf

upstream websocket {
        server domen_name.ru:8088;
}

server {
    listen      <ip_address>:443;
    server_name domen_name.ru www.domen_name.ru;
    ssl         on;
    ssl_certificate      /home/admin/conf/web/ssl.domen_name.ru.pem;
    ssl_certificate_key  /home/admin/conf/web/ssl.domen_name.ru.key;
    error_log  /var/log/apache2/domains/domen_name.ru.error.log error;

    location / {
         proxy_pass      https://<ip_address>:8443;
         location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7z|aac|m4a|mp3|mp4|ogg|wav|wma|3gp|avi|flv|m4v|mkv|mov|mpeg|mpg|wmv|exe|iso|dmg|swf)$ {
            root           /home/admin/web/domen_name.ru/public_html;
            access_log     /var/log/apache2/domains/domen_name.ru.log combined;
            access_log     /var/log/apache2/domains/domen_name.ru.bytes bytes;
            expires        max;
            try_files      $uri @fallback;
        }
    }

    location /ws/ {

                proxy_pass http://websocket;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $host;

                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto https;
                proxy_read_timeout 86400; # neccessary to avoid websocket timeout disconnect
                proxy_redirect off;

    }

    location /error/ {
        alias   /home/admin/web/domen_name.ru/document_errors/;
    }

    location @fallback {
        proxy_pass      https://<ip_address>:8443;
    }

    location ~ /\.ht    {return 404;}
    location ~ /\.svn/  {return 404;}
    location ~ /\.git/  {return 404;}
    location ~ /\.hg/   {return 404;}
    location ~ /\.bzr/  {return 404;}

    include /home/admin/conf/web/snginx.domen_name.ru.conf*;
}