通过 nginx websocket 代理连接时 WebApp 崩溃

Posted

技术标签:

【中文标题】通过 nginx websocket 代理连接时 WebApp 崩溃【英文标题】:WebApp crashing when connecting through a nginx websocket proxy 【发布时间】:2020-03-04 01:37:26 【问题描述】:

我对 docker/nginx 和 websockets 有一个非常奇怪的情况, 我通过 nginx 代理到 websocket 服务器,每次关闭连接时服务器都会崩溃。

如果我直接连接到 websocket 服务器并关闭连接,一切都很好。

如果我通过 Xcode 和 nginx 运行 websocket 服务器并关闭连接,它也可以正常工作。

我检查了所有的 linux 依赖项,但自 2019 年 9 月以来,它们都没有升级(昨晚才开始发生)

导致的命令

var s = new WebSocket("wss://localhost:8080/socket", "zara")
s.close();

故障转储日志

zaraapp_1  | * thread #7, name = 'issueServer', stop reason = signal SIGPIPE
zaraapp_1  |     frame #0: 0x00007ffff76832b7 libpthread.so.0`__libc_write + 71

**编辑

更新了所有 docker 镜像,现在只有在刷新浏览器时才会发生(在 Safari 和 Chrome 中测试)

在 IE 中不会发生

【问题讨论】:

【参考方案1】:

发现它是允许 SIGPIPE 通过的调试工具,即使它在代码中被忽略

【讨论】:

以上是关于通过 nginx websocket 代理连接时 WebApp 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

websocket使用nginx代理后连接频繁打开和关闭

websocket使用nginx代理后连接频繁打开和关闭

Nginx代理WebSocket方法

使用 nginx 作为 websocket 连接的代理

Nginx Websocket 代理丢帧

Nginx代理WebSocket方法