Конфигурация Nginx Websocket для двойных прокси - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь отправлять запросы через websocket через два прокси-сервера nginx.Он должен выполнять SSR (рендеринг на стороне сервера)

Мой стек выглядит так: Внешний мир <-> nginx <-> rendora (SSR) <-> nginx <-> daphne <-> django

Когда я занимался внешним миром <-> nginx <-> daphne <-> django

Соединения веб-сокетов были установлены очень хорошо.Но когда я реализовал rendora (SSR) и добавил другой прокси-сервер к nginx, он не работает.Сбой соединения с веб-сокетом во время рукопожатия.Я предполагаю, что запросы "Upgrade" терпят неудачу где-то на моих серверах nginxМой nginx conf выглядит следующим образом:

server {
        listen 8000;

        location / {
                include proxy_params;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_pass http://unix:/home/ubuntu/myproject/myproject.sock;
        }
}

server {
        server_name mydomain;
        charset utf-8;

        location /static {
                alias /home/ubuntu/myproject/apps/web-build/static;
        }
        location /      {
                include proxy_params;
                proxy_pass http://127.0.0.1:3001;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
        }

    listen 443 ssl; # managed by Certbot
   ...
}

Таким образом, местоположение / порт 443 отправляет все запросы из внешнего мира на 127.0.0.1:3001, где слушает rendora (сервер SSR).И сервер SSR (rendora) перенаправляет их в 127.0.0.1:8000, где прокси-сервер nginx подключается к сокету daphne unix.

Сам SSR работает хорошо, кроме запросов websocket.Но я понятия не имею, почему обновление websocket не выполняется, когда запросы проходят через два прокси-сервера nginx.

1 Ответ

0 голосов
/ 26 сентября 2019

Я решил это, отправив запросы / graphql websocket напрямую на сервер Daphne.Я до сих пор не знаю, почему не работает соединение с websocket, когда я перенаправляю их на другой прокси-сервер nginx.

location /graphql {
                        include proxy_params;
                        proxy_pass http://unix:/home/ubuntu/myproject/myproject.sock;
                        proxy_http_version 1.1;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection "upgrade";
                    }

location /      {
          include proxy_params;
          proxy_pass http://127.0.0.1:3001;
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...