@EvgeniiR
https://github.com/EvgeniiR

Почему 502 bat gateway(nginx, websocket)?

Добрый день.
Пытаюсь настроить nginx для webscoket.
Запущен такой вот сервер
ws_server.php
<?php
$ws = new swoole_websocket_server('127.0.0.1', 9502);

$ws->on('open', function ($ws, $request) {
//    print_r($request);
    $ws->push($request->fd, "hello, welcome!\n");
});

$ws->on('message', function ($ws, $frame) {
    echo "We recieve message: {$frame->data}\n";
    $ws->push($frame->fd, "Got it!\n");
});

$ws->on('close', function ($ws, $fd) {
    echo "client-{$fd} is closed\n";
});

$ws->start();

Вот конфиг для сайта:
nginx config
server {
    listen 80;
    listen [::]:80;

    server_name ws-chat.test;
    root /var/www/ws-chat;
    index index.php index.html index.htm;

    location /ws/ {
        proxy_pass http://127.0.0.1:9502;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
    }

    error_log /var/log/nginx/app_error.log;
    access_log /var/log/nginx/app_access.log;
}

Почему-то ws-chat.test/ws выдаёт 502 Bad Gateway (nginx)

Ориентировался на этот пост - https://www.nginx.com/blog/websocket-nginx/
Если что, всё это дело внутри docker(laradock).

Подключаюсь через js var socket = new WebSocket("ws:ws-chat.test/ws/");

UPD: Решил. В конфиге nginx нужно было прописать proxy_pass http://workspace:9502;
  • Вопрос задан
  • 1268 просмотров
Решения вопроса 1
@EvgeniiR Автор вопроса
https://github.com/EvgeniiR
UPD: Решил. В конфиге nginx нужно было прописать proxy_pass http://workspace:9502;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Konstantin18ko
@Konstantin18ko
Стоматолог
Ваш ответ на вопрос

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

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