Настройка 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 для этой задачи?