У меня есть приложение 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 неизвестен.
Любая помощь приветствуется.
введите описание изображения здесь