gpt4 book ai didi

ssl - 在长轮询期间刷新 NginX 的 SSL 缓冲区

转载 作者:数据小太阳 更新时间:2023-10-29 03:37:44 26 4
gpt4 key购买 nike

我正在编写一个使用长轮询向客户端推送消息的应用程序。但是,它在完成发送消息后并没有结束请求:它只是刷新。它工作正常,即使我通过 nginx 代理它并通过互联网访问它也是如此。

upstream app {
server localhost:1000;
}

server {
listen 80;
location / {
proxy_pass http://app;
client_max_body_size 20m;
proxy_redirect off;
send_timeout 86400;
proxy_read_timeout 86400;
proxy_buffering off;
gzip off;
}
}

也就是说,直到我在 nginx 上启用 SSL。然后它就不会再冲洗了。我可以通过将 ssl_buffer_size 设置为 1 来解决这个问题,但这会对性能产生负面影响。

upstream app {
server localhost:1000;
}

server {
listen 443;
ssl_certificate cert.pem;
ssl_certificate_key key.pem;
ssl_buffer_size 1;
location / {
proxy_pass http://app;
client_max_body_size 20m;
proxy_redirect off;
send_timeout 86400;
proxy_read_timeout 86400;
proxy_buffering off;
gzip off;
}
}

我用 Go 编写了我的应用程序,并且我正在使用来自 net/http 的标准 Flush()。我尝试使用 Hijack 获取常规 TCP 缓冲区和 Flush(),但它仍然无效。

最佳答案

这不是 Go 的问题,而是 Nginx 配置的问题。很可能是 Nginx 阻止了您的数据。

你可以试试disable proxy buffering避免这种情况。尝试:

server {
listen 443;
ssl_certificate cert.pem;
ssl_certificate_key key.pem;
ssl_buffer_size 1;

proxy_buffering off;
}

P.S.:未测试,但请尝试一下。

关于ssl - 在长轮询期间刷新 NginX 的 SSL 缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26813594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com