【问题标题】:WebSocket connection to "wss://mydomain.com/one/of/app/graphql" failed - NestJS GraphQL, docker, nginxWebSocket 连接到“wss://mydomain.com/one/of/app/graphql”失败 - NestJS GraphQL、docker、nginx
【发布时间】:2021-03-29 13:10:04
【问题描述】:

安全的 websocket 连接有问题。我有在 https 上运行的应用程序,突变和查询工作,但无法建立 wss 连接:/ 当我在不安全的连接 (http) 上运行 react 应用程序并使用 ws 时,一切正常。我不确定是什么导致了这个问题——可能是 nginx 代理,可能是 nestjs graphql 配置,或者可能是对 apollo 客户端的反应。很快:

拥有带有配置证书的 nginx 的服务器。我的域的服务器代理子目录到某个应用程序(在 docker 容器中运行并暴露在端口 3000 上):

server {
  listen 443 ssl;
  server_name mydomain.com
  [...cert configs...]

  location /one/of/app/ {
    proxy_pass http://localhost:3000/
  }
}

正如我提到的,该网站使用安全连接,但 wss 连接失败。我没有在服务器或客户端做任何额外的事情——所有配置都一样,而不是 uri(https,wss 而不是 http,ws)。在不安全的连接上,使用 ws:// websocket 有效。有什么建议吗?

完全错误:

WebSocket connection to 'wss://mydomain.com/one/of/app/graphql' failed: Error during WebSocket handshake: Unexpected response code: 400

【问题讨论】:

    标签: nginx websocket nestjs apollo-client apollo-server


    【解决方案1】:

    在这里找到解决方案:https://stackoverflow.com/a/48096141/13514288

    为 api (/one/of/app/) nginx 代理添加额外的标头:

    location /one/of/app/ {
      proxy_set_header   X-Forwarded-For $remote_addr;
      proxy_set_header   Host $http_host;
      proxy_set_header   Upgrade $http_upgrade;
      proxy_set_header   Connection "upgrade";
      proxy_pass http://localhost:3000/
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      • 2023-01-30
      • 1970-01-01
      • 2015-12-18
      • 2021-09-23
      • 2021-06-19
      • 2021-09-28
      相关资源
      最近更新 更多