nginx - 如何配置 nginx 反向代理以使用 SECURE websockets 上游?

标签 nginx websocket

我想使用 nginx 作为 websocket 连接的反向代理。

考虑 echo.websocket.org 成为我的后端 websocket 服务。作为测试客户端,我使用 wscat 来自 https://github.com/websockets/wscat .

什么工作:

客户端 <-- ws --> 后端 :wscat --connect ws://echo.websocket.org
客户端 <-- wss --> :wscat --connect wss://echo.websocket.org
客户端 <-- ws --> 代理 <-- ws --> 后端 :wscat --connect ws://localhost使用以下 nginx 配置:

events {
}

http {
    server {
        listen 80;

        location / {
            proxy_pass http://echo.websocket.org;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection upgrade;
        }
    }
}

客户端 <-- wss --> 代理 <-- ws --> 后端 :wscat -n --connect wss://localhost使用以下 nginx 配置:
events {
}

http {
    server {
        listen 443 ssl;
        ssl_certificate /pki/cert.pem;
        ssl_certificate_key /pki/key.pem;

        location / {
            proxy_pass http://echo.websocket.org;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection upgrade;
        }
    }
}

我想要和需要帮助的是配置​​ nginx 以使用安全的 websockets 连接到后端。我想要这样的配置:

客户端 <-- wss --> 代理 <-- wss --> 后端

我尝试更改 http://echo.websocket.orghttps://echo.websocket.org没有成功。这会导致 504 网关超时。

最佳答案

您需要使用 proxy_ssl_certificateproxy_ssl_certificate_keyNginx Docs 中所述

关于nginx - 如何配置 nginx 反向代理以使用 SECURE websockets 上游?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54709446/

相关文章:

django - 如何在子路径中托管Django项目?

Node.js 请求模块 + NGINX

java - 设置 header 网络套接字?

javascript - 浏览器中的 Rocket Chat Realtime API

Azure Websocket 突然不适用于我的应用程序

docker - nginx 的 gitlab 容器代理传递不适用于推送请求

batch-file - 使用 ffmpeg 进行 Nginx 实时转码

php - AWS EC2 实例上的 Nginx + Php Fpm 扩展问题

ios - iOS 应用程序与 MacOS 应用程序之间的通信

javascript - 使用 websocket 在浏览器和 java SE 项目之间传递数据