Проксирование websocket в nginx через поддомен. Как реализовать?

Здравствуйте! в общем наткнулся на проблему с проксированием и не могу понять как реализовать....
У меня есть домен site.com на нём весь контент и в app.js
var Hsocket = {
    wss:function () {
        return new WebSocket("wss://wss."+location.host+"/");
    },

и как вы поняли что websocket-ы должны идти через поддомен wss.site.com и с тем что на site.com еще стоит ssl соединение!
Всю голову сломал уже разные коды ошибок получаю(200,502,400,500,301) но запустить не получается
вот моя конфигурация nginx для site.com
server {
    server_name site.com www.site.com  ;
    listen 111.111.111.111:80;
    listen 111.111.111.111:443 ssl ;

    ssl_certificate "/var/www/httpd-cert/site.com_2021-02-05-15-37_38.crt";
    ssl_certificate_key "/var/www/httpd-cert/site.com_2021-02-05-15-37_38.key";

    charset utf-8;

    gzip on;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types text/css text/xml application/javascript text/plain application/json image/svg+xml image/x-icon;
    gzip_comp_level 1;

    set $root_path /var/www/site.com/data/www/site.com/public;
    root $root_path;
    disable_symlinks if_not_owner from=$root_path;

    location / {
        index index.php index.html;
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/site.com.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
     }

    location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpeg|avi|zip|gz|bz2|rar|swf|ico|7z|doc|docx|map|ogg|otf|pdf|tff|tif|txt|wav|webp|woff|woff2|xls|xlsx|xml)$ {
        try_files $uri $uri/ @fallback;
    }

    location @fallback {
        fastcgi_pass unix:/var/run/site.com.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

    include "/etc/nginx/fastpanel2-sites/site.com/site.com.includes";
    include /etc/nginx/fastpanel2-includes/*.conf;


    error_log /var/www/site.com/data/logs/site.com-frontend.error.log;
    access_log /var/www/site.com/data/logs/site.com-frontend.access.log;
}

вот конфигурация nginx для wss.site.com
server {
    server_name wss.site.com www.wss.site.com  ;
    listen 111.111.111.111:80;
    listen 111.111.111.111:443 ssl ;

    ssl_certificate "/var/www/httpd-cert/wss.site.com_2021-02-05-17-15_42.crt";
    ssl_certificate_key "/var/www/httpd-cert/wss.site.com_2021-02-05-17-15_42.key";
location / {

            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_pass http://localhost:81;
        }

    
}
ошибка при такой конфигурации
WebSocket connection to 'wss://wss.site.com/' failed: Error during WebSocket handshake: Unexpected response code: 200
  • Вопрос задан
  • 309 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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