Настройка websocket через Nginx + php-fpm на контейнерах Docker

Пробую настроить соединение через websoket но все попытки проваливаются. Не ясно где запускать серевер, через какие порты подключаться.

wss://front.ru:9005/userId=1&authKey=xxx 

Docker-compose.yml

version: '3'
services:
  php-fpm:
    build:
      context: docker/php-fpm
    volumes:
      - ./app:/app
    networks:
      - internal

  nginx:
    build:
      context: docker/nginx
    volumes:
      - ./app:/app
    ports:
      - "80:80"
      - "9005:9005"
    depends_on:
      - php-fpm
    networks:
      - internal

В контейнере крутится приложение на yii2. В контейнере php-fpm запускаю сервер (morozovsk/yii2-websocket)

docker exec -it php-fpm bash

nohup ./yii websocket/start server &

Конфиг сервера

 'controllerMap' => [
        'websocket' => 'morozovsk\yii2websocket\console\controllers\WebsocketController',
],

'websocket' => [
            'class' => 'morozovsk\yii2websocket\Connection',
            'servers' => [
                'server' => [
                    'class' => 'console\ws\ServerWebsocketDaemonHandler',
                    'pid' => '/tmp/websocket_c_c.pid',
                    'websocket' => 'tcp://0.0.0.0:9005',
                    'localsocket' => 'tcp://0.0.0.0:9011',
                ],
            ],
        ],

Сервер запускает, но есть предположение что не настроен Nginx

Конфиг такой

server {
        charset utf-8;
        client_max_body_size 128M;
        sendfile off;

        listen 80;
        server_name front.ru;
        root        /app/frontend/web/;
        index       index.php;

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

        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass php-fpm:9000;
            fastcgi_index index.php;
            fastcgi_read_timeout 1000;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }
    }

    server {
        charset utf-8;
        client_max_body_size 128M;
        sendfile off;

        listen 80;
        server_name admin.ru;
        root        /app/backend/web/;
        index       index.php;

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

        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass php-fpm:9000;
            fastcgi_index index.php;
            fastcgi_read_timeout 1000;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }
    }

Правильно ли я делаю когда запуская сокерсервер из контейнера php-fpm?

Как настроить Nginx для этой задачи?


Ответы (0 шт):