NGINX 断开单个客户端连接

我的 nginx 正在传输从 mjpeg-streamer 传来的网络摄像头流,因此客户端连接会挂起很长时间。在某些时候,我想断开所有仍连接着该流的客户端,保留其他客户端的连接。我已经搜寻了好几天,这里描述了类似的问题 here 。被接受的答案说:

如果你的目的是断开一个客户端的连接,同时保持其他所有连接,那么你就没有运气了。没有办法通过 shell 命令实现这一点。如果您的 HTTP 连接挂起的时间很长(例如 WebSocket),则可能可以编写应用程序侧的内容来允许您关闭您不喜欢的连接。

我查看了已经用于不同项目的 njs 和 lua。但是,我找不到指向正确方向的提示。有任何想法吗?

p.s. 根本问题是,我正在使用开放策略代理(OPA)规则来保护 nginx 位置/mjpeg,这样只有通过正确的?userid=<long-id-string> URL 参数的用户才能访问流。但是,当 OPA 更改 id 时,那么用户只有通过新的 id 参数才能访问该流。但是,当发生这种情况时,我想断开仍然连接到旧 id 的流的用户。

原文链接 https://stackoverflow.com/questions/71170201

点赞