【问题标题】:Should I use nginx as a proxy for WAMP?我应该使用 nginx 作为 WAMP 的代理吗?
【发布时间】:2018-06-09 16:30:13
【问题描述】:

伙计们!

我构建了一个基于 WebSocket 的聊天应用程序。作为后端,我使用 PHP 和 nginx 作为 WebSocket 连接的代理。

搜索 WS 的 PHP 库给了我 Ratchet。该工具支持 WAMP 协议。关于它:http://wamp-proto.org/why/

好吧,我决定使用这个协议 - 它看起来很有用。我以标准方式为代理 WebSocket 连接调整了 nginx。对于在前端/后端使用 WebSocket 的常见情况 - 一切都很好。

但是,如果我开始在后端使用 WAMP 并尝试在前端将 autobahn.js 用于 WAMP,我每次都会收到 426 No Sec-WebSocket-Protocols requested support 作为响应。在 PHP 中,我看到来自 nginx 的连接没有收到。所以,据我了解,nginx 不会以正确的方式处理与 WAMP 子协议的连接。

所以,我不明白,我应该使用 nginx 作为 WAMP 的代理吗? WAMP 只是 WebSocket 的子协议,但对我不起作用。

有人知道问题出在哪里吗?

【问题讨论】:

    标签: nginx websocket proxy wamp-protocol


    【解决方案1】:

    似乎 Nginx 没有将客户端宣布的 WebSocket 子协议转发到后端 WAMP 路由器。

    尝试将此添加到您的 Nginx conf:

    proxy_set_header Sec-WebSocket-Protocol $http_sec_websocket_protocol

    见:https://stackoverflow.com/a/36506746/884770

    【讨论】:

    • 根据上面的链接,您可能需要其他项目,例如 proxy_set_header Upgrade websocket;proxy_set_header Connection Upgrade; 发布您的 nginx 配置的相关部分可能有助于其他人确定答案。
    猜你喜欢
    • 2020-06-24
    • 2016-12-15
    • 2017-07-21
    • 2011-03-02
    • 1970-01-01
    • 2019-01-15
    • 2011-07-12
    • 2020-11-28
    • 2019-12-11
    相关资源
    最近更新 更多