Рейтинг:0

как настроить сервер websocket вместе с двумя бэкэндами laravel и spa

флаг fr

у меня есть две настройки бэкэнда laravel на разных маршрутах. и есть спа на корне. теперь я хочу установить вместе с ним сервер веб-сокетов. вот мой сайт.conf


############## block-4 : тестирование нескольких подкаталогов #############
сервер {
    слушать 80;
    # имя_сервера abc.xyz;
    имя сервера _;
    корень /var/www/html/abc.xyz;
    # корень /var/www/html;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    индекс index.html index.php;

 
    место расположения / {
        # корень /var/www/html/abc.xyz;
        try_files $uri /index.html ;
    }

    кодировка utf-8;

    местоположение = /favicon.ico {
        доступ_лог выключен; log_not_found выключен;
    }
    местоположение = /robots.txt {
        доступ_лог выключен; log_not_found выключен;
    }

    # error_page 404 /index.php;

############## block-4 : тестирование нескольких подкаталогов #############
сервер {
    слушать 80;
    # имя_сервера abc.xyz;
    имя сервера _;
    корень /var/www/html/abc.xyz;
    # корень /var/www/html;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    индекс index.html index.php;

 
    место расположения / {
        # корень /var/www/html/abc.xyz;
        try_files $uri /index.html ;
    }

    кодировка utf-8;

    местоположение = /favicon.ico {
        доступ_лог выключен; log_not_found выключен;
    }
    местоположение = /robots.txt {
        доступ_лог выключен; log_not_found выключен;
    }

    # error_page 404 /index.php;

    # BACKEND инструкции по перезаписи местоположения
    местоположение / бэкэнд {
        псевдоним /var/www/html/abc.xyz/backend;

        try_files $uri $uri/ @backend;

        расположение ~ \.php$ {
            включить fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
        }
    }

    местоположение @backend {
        # перезаписать /backend/(.*)$ /backend/index.php?/$1 last;
        переписать ^/backend/(.*)$ /backend/index.php последним;
    }
    # конец локации BACKEND


    # BACKEND инструкции по перезаписи местоположения
    расположение /API {
        псевдоним /var/www/html/abc.xyz/api;

        try_files $uri $uri/ @api;

        расположение ~ \.php$ {
            включить fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
        }
    }

    местоположение @api {
        переписать /api/(.*)$ /api/index.php?/$1 последним;
    }
    # конец локации BACKEND


    # Правила перезаписи phpmyadmin.
    расположение /phpmyadmin {
        корень /usr/доля/;
        индекс index.php index.html index.htm;
        расположение ~ ^/phpmyadmin/(.+\.php)$ {
            try_files $uri = 404;
            корень /usr/доля/;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
            fastcgi_index index.php;
            включить /etc/nginx/fastcgi_params;
        }

        расположение ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
            корень /usr/доля/;
        }
    }
    # конец блока phpmyadmin здесь.

    # конфигурация веб-сокета здесь 
  местоположение /ws* {
    прокси_пасс http://127.0.0.1:6001;
    proxy_set_header Хост $host;
    proxy_read_timeout 60;
    proxy_connect_timeout 60;
    прокси_перенаправление выключено;

    # Разрешить использование веб-сокетов
    прокси_http_версия 1.1;
    proxy_set_header Обновить $http_upgrade;
    proxy_set_header Соединение «обновление»;
    proxy_set_header Хост $host;
    proxy_cache_bypass $http_upgrade;
  }
    # конец конфигурации вебсокета


    расположение ~ /\.(?!известно).* {
        отрицать все;
    }
}

############# конец блока-4 ########################


в местоположение /ws Блок взят из документации по веб-сокетам laravel. но этот блок местоположения дает ошибку 404 не найден. но эта конфигурация nginx не работает. Мой проект веб-сайта laravel отлично работает на локальном хосте.

редактировать

это результат lsof -i :80 443 6001

КОМАНДА PID ПОЛЬЗОВАТЕЛЬ ТИП FD УСТРОЙСТВО РАЗМЕР/ВЫКЛ НАЗВАНИЕ УЗЛА
php 414490 root 5u IPv4 5974385 0t0 TCP *:x11-1 (СЛУШАТЬ)
php 414490 root 6u IPv4 5991457 0t0 TCP localhost.localdomain:x11-1->localhost.localdomain:35684 (УСТАНОВЛЕНО)
nginx 415533 root 6u IPv4 5990824 0t0 TCP *:https (СЛУШАТЬ)
nginx 415533 root 7u IPv4 5990825 0t0 TCP *:http (СЛУШАТЬ)
nginx 415534 www-data 6u IPv4 5990824 0t0 TCP *:https (СЛУШАТЬ)
nginx 415534 www-data 7u IPv4 5990825 0t0 TCP *:http (СЛУШАТЬ)
nginx 415535 www-data 6u IPv4 5990824 0t0 TCP *:https (СЛУШАТЬ)
nginx 415535 www-data 7u IPv4 5990825 0t0 TCP *:http (СЛУШАТЬ)
nginx 415536 ​​www-data 6u IPv4 5990824 0t0 TCP *:https (СЛУШАТЬ)
nginx 415536 ​​www-data 7u IPv4 5990825 0t0 TCP *:http (СЛУШАТЬ)
nginx 415537 www-data 6u IPv4 5990824 0t0 TCP *:https (СЛУШАТЬ)
nginx 415537 www-data 7u IPv4 5990825 0t0 TCP *:http (СЛУШАТЬ)
nginx 415538 www-data 6u IPv4 5990824 0t0 TCP *:https (СЛУШАТЬ)
nginx 415538 www-data 7u IPv4 5990825 0t0 TCP *:http (СЛУШАТЬ)
nginx 415539 www-data 6u IPv4 5990824 0t0 TCP *:https (СЛУШАТЬ)
nginx 415539 www-data 7u IPv4 5990825 0t0 TCP *:http (СЛУШАТЬ)
nginx 415539 www-data 8u IPv4 5985866 0t0 TCP linux: https-> 157.42.56.21: 55728 (УСТАНОВЛЕНО)
nginx 415539 www-data 12u IPv4 5985868 0t0 TCP localhost.localdomain:35684->localhost.localdomain:x11-1 (УСТАНОВЛЕНО)
djdomi avatar
флаг za
Какой порт слушает Laravel?
rajesh_chaurasiya avatar
флаг fr
@djdomi вы запрашиваете http-порт laravel по умолчанию или порт веб-сокета? laravel по умолчанию порт 80, а для веб-сокета это 6001.
djdomi avatar
флаг za
покажите нам, `lsof -i :80,443,6001`
rajesh_chaurasiya avatar
флаг fr
@djdomi я добавляю вывод в редактирование вопроса.
djdomi avatar
флаг za
возможно, вы можете присоединиться к [thechat] (https://chat.stackexchange.com/rooms/126791/thechat), чтобы сократить его, но я вижу, что NGINX работает только на этих двух портах. - но я вижу, что вы используете более новую версию lsof, поэтому `lsof -P -i :80,443,6001` может быть обновлена ​​:)
rajesh_chaurasiya avatar
флаг fr
@djdomi я отказался от этой конфигурации nginx. на этот раз я создал серверный блок для веб-сокета на другом поддомене. это сработало. однако это все еще не работает должным образом, как ожидалось. но я хочу попробовать.
djdomi avatar
флаг za
@rajeshchaurasiya Ну, ИМХО, поддомены лучше подходят для таких вещей, чем подкаталоги. А может вы просто забыли перезагрузить nginx и в этот раз сделали это из-за смены субдомена? :)
rajesh_chaurasiya avatar
флаг fr
@djdomi нет, сэр. я помню это правило. я перезагрузил и перезапустил (для дополнительной предосторожности) конфигурацию nginx. Я думаю, что проблема была в блоке местоположения, возможно. но спасибо, сэр, за внимание. я буду на связи

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.