Рейтинг:0

Не удается установить wss-соединение [React + ASP.NET Core, SignalR + nginx]

флаг bq

У меня есть приложение React, которое взаимодействует с основным API Asp.Net. Оба они развернуты в Docker на моей виртуальной машине. Nginx установлен и настроен для разрешения доменных имен для приложения (thesis.uno — для приложения реакции, api.thesis.uno — для ядра asp.net API)

Я добавил поддержку чата в свое приложение с помощью SignalR, но когда реакция пытается установить соединение wss через api.thesis.uno, это не удается. введите описание изображения здесь

Когда я заменяю доменное имя api на ip и порт виртуальной машины, все работает нормально, а это значит, что проблема в конфигурации Nginx.

введите описание изображения здесь

Я пытался погуглить эту беду, но никакое решение не помогло мне (https://stackoverflow.com/questions/48300288/signalr-in-asp-net-core-behind-nginx, https://stackoverflow.com/questions/12102110/nginx-to-reverse-proxy-websockets-and-enable-ssl-wss)

Моя конфигурация nginx:

client_max_body_size 64M;

восходящий сервер {
    # включить липкую сессию на основе IP
    ip_хеш;

    локальный хост сервера: 5000;
  }

сервер {
    корень /var/www/thesis.uno/html; # Напрямую обслуживает что-либо в общей папке Rails
    индекс index.html index.htm index.nginx-debian.html;
    имя_сервера thesis.uno www.thesis.uno; # под управлением Certbot

    место расположения / {
        proxy_pass http://localhost:5001;
        proxy_set_header Хост $host;
    }

    слушать 443 ssl; # под управлением Certbot
    ssl_certificate /etc/letsencrypt/live/thesis.uno/fullchain.pem; # под управлением Certbot
    ssl_certificate_key /etc/letsencrypt/live/thesis.uno/privkey.pem; # под управлением Certbot
    включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot
}

сервер {
    если ($host = www.thesis.uno) {
        вернуть 301 https://$host$request_uri;
    } # управляется Certbot


    если ($ host = thesis.uno) {
        вернуть 301 https://$host$request_uri;
    } # управляется Certbot

    слушать 80 ;
    имя_сервера thesis.uno www.thesis.uno;
    вернуть 404; # под управлением Certbot
}

сервер {
    имя_сервера api.thesis.uno www.api.thesis.uno;

    # все остальные запросы
    место расположения / {
        прокси_пасс http://бэкэнд;
        proxy_set_header Хост $host;
    }

    # запросы чата через веб-сокет
    местоположение /api/чат {
        прокси_пасс http://бэкэнд;
        прокси_http_версия 1.1;
        proxy_set_header Обновить $http_upgrade;
        proxy_set_header Соединение $http_connection;
        proxy_set_header Хост $host;
        proxy_cache_bypass $http_upgrade;
    }

    слушать 443 ssl; # под управлением Certbot
    ssl_certificate /etc/letsencrypt/live/api.thesis.uno/fullchain.pem; # под управлением Certbot
    ssl_certificate_key /etc/letsencrypt/live/api.thesis.uno/privkey.pem; # под управлением Certbot
    включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot
}

сервер {
    если ($host = www.api.thesis.uno) {
        вернуть 301 https://$host$request_uri;
    } # управляется Certbot


    если ($ host = api.thesis.uno) {
        вернуть 301 https://$host$request_uri;
    } # управляется Certbot

    слушать 80;
    имя_сервера api.thesis.uno www.api.thesis.uno;
    вернуть 404; # под управлением Certbot
}

ОБНОВИТЬ:

Оказалось, что у nginx есть файл журнала, похоже, что nginx не может правильно перенаправить запрос, выдает 404 по запросу.

введите описание изображения здесь

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

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