Vue Apollo ssl websocket возвращает 404 при nginx + конфигурации Cloudflare - PullRequest
0 голосов
/ 13 июля 2020

У меня есть приложение vue, и я пытаюсь запустить подписку через безопасную конечную точку wss.

Я создаю apollo-link-ws следующим образом

const wsLink = new WebSocketLink({
  uri: Config.wsDataHost,
  options: {
    reconnect: true,
    lazy: true,
    connectionParams: async () => {
      const token = await getIdToken();
      return {
        headers: {
          Authorization: token ? `Bearer ${token}` : ""
        }
      };
    }
  }
});

Когда я запустите подписку apollo на конечной точке, отличной от ssl, все работает нормально, но когда я пытаюсь запустить ее через соединение wss, я получаю 404 в соединении через websocket.

Клиентский код заключен в контейнер docker вместе с экземпляром nginx. Вот моя конфигурация nginx:

location /ws/graphql {
        proxy_set_header HOST $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass_request_headers on;
        proxy_pass http://graphql-svc:8080/v1/graphql;
        proxy_http_version 1.0;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }

graphql-sv c - это еще один контейнер docker, в котором размещен экземпляр базы данных graphql.

Ошибка, которую я получаю безопасная среда, например https://myenv.com/ - это

Ошибка подключения WebSocket к 'wss: //myenv.com/ws/graphql': Ошибка во время рукопожатия WebSocket: Неожиданный код ответа: 404

Я знаю, что сертификаты ssl добавляются с помощью сервисов cloudflare.

Вот один журнал для одного запроса веб-сокета в контейнере nginx docker:

+ 0000] "GET / ws / graphql HTTP / 1.0" 404 65 "-" "Mozilla / 5.0 (Macintosh; Intel Ma c OS X 10_14_6) AppleWebKit / 537.36 (K HTML, как Gecko ) Chrome / 83.0.4103.116 Safari / 537.36 "" 2a02: 2f09: 3002: 3600: 2d0 c: 34da: a247: 43b9 "

Я имею в виду, что 404 означает, что конечная точка не существует, но для нормальной среды http://myenv.com подписка работает, а для защищенной - не работает.

Сильфон Я добавил снимок экрана своей вкладки безопасности на chrome, показывающий, что запрос wss неизвестен.

Любая помощь приветствуется.

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

...