【问题标题】:Rewrite WebSocket messages via Nginx?通过 Nginx 重写 WebSocket 消息?
【发布时间】:2017-09-08 12:22:13
【问题描述】:

是否可以重写通过 Nginx 代理的 websocket 消息的内容?

例如,假设我发送了一条内容为JSON.stringify({ auth: 'someIdKey' }) 的消息。在 Nginx 上,我会将 someIdKey 的值替换为 someJwt,然后将其转发到代理的上游资源。当上游资源将消息发送回客户端时,我还想进行反向翻译。

我知道如何为 HTTP 请求执行此操作(并且正在执行此操作),重写自定义标头以进行即时翻译,但我不确定如何将模式转移到 websocket 通信。

我使用OpenResty 作为我的 Nginx 发行版,并且在 Lua 脚本方面还算不错。

将不胜感激任何想法/帮助。

【问题讨论】:

    标签: nginx websocket lua openresty


    【解决方案1】:

    您可以使用https://github.com/openresty/lua-resty-websocket 模块。

    它同时具有服务器端和客户端的非阻塞 API。所以你可以编程任何你想要的东西。

    【讨论】:

    • 它对 nginx 是非阻塞的,但对脚本本身不是。如果您卡在 recv_frame() 中,那么当下游向您发送数据时,它也会卡住(就 ​​api 强加这个小细节而言)。
    • @user3125367 你可以使用轻线程并实现2个事件循环
    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2023-03-11
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 2019-12-23
    相关资源
    最近更新 更多