我的配置:
upstream api-backend {
server localhost:9005;
}
server {
listen 80;
lingering_close off;
root /var/www/html;
index index.html;
location /api/ {
proxy_http_version 1.1;
proxy_set_header Connection "";
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT';
proxy_pass http://api-backend/;
}
location / {
expires off;
try_files $uri $uri/ =404;
}
}
我正在提供 /var/www/html 中的文件,并且 /api 端点转发到 Go 服务。Go 服务在几毫秒内完成请求,但 Chrome 的网络选项卡报告所有请求所用的时间都比 1 秒长几毫秒。
我相信是 Nginx 使连接保持打开状态。我如何才能找出是什么使连接保持活动状态以及如何尽快关闭它?
答案1
我可能会先keepalive_disable,可以在 http、服务器或位置级别进行。但是,默认值为 75 秒,因此这可能无法解决问题。
此 keepalive 是否会阻止客户端接收数据?您可以发布 Chrome 网络选项卡的屏幕截图并描述您遇到的问题吗?
Keepalive 是总体来说是一件好事。它们可以避免在再次请求数据时必须重新建立连接的开销。如果这不会造成问题,我就不会这样做。