nginx似乎正在替换上游发送的Connection: close
标头,并将其替换为Connection: keep-alive
标头。有什么方法可以覆盖它吗?
http {
upstream main {
server 127.0.0.1:8000;
}
server {
listen 443;
ssl on;
ssl_certificate server.crt;
ssl_certificate_key server.key;
location / {
proxy_pass http://main;
}
location /find {
proxy_pass http://main;
proxy_buffering off;
}
}
}
答案 0 :(得分:3)
设置keepalive_requests 0;
说服nginx发送Connection: close
。
答案 1 :(得分:2)
Connection标头特定于连接。
来自HTTP / 1.1规范,
Connection general-header字段允许发送方指定该特定连接所需的选项,并且代理不得通过其他连接进行通信。
所以nginx发送的内容与从上游发送的内容无关。以下是一些选项:
如果您不想重复使用连接,keepalive_requests 0可以正常工作。
keepalive_disable ua适用于特定的用户代理。
并且this answer正常工作。
答案 2 :(得分:1)
如果您使用的是PHP-FPM或PHP FastCGI,请查看fastcgi_finish_request()
:
这个功能可以让你加快一些php的实现 查询。当有动作时,可以加速 不影响服务器响应的脚本执行过程。对于 例如,在页面具有后,可以在memcached中保存会话 已形成并传递给Web服务器。 fastcgi_finish_request()是一个 php功能,停止响应输出。 Web服务器立即 开始将响应“慢慢地,悲伤地”传递给客户端和php 同时可以在一个上下文中做很多有用的事情 查询,例如保存会话,转换下载的视频, 处理各种统计等。
http://php-fpm.org/wiki/Features#fastcgi_finish_request.28.29
答案 3 :(得分:0)
在安全服务器上禁用keepalive会增加服务器负载,请检查此文档上的“HTTPS服务器优化”会话。 http://nginx.org/en/docs/http/configuring_https_servers.html
我可能想设置一个小的keepalive_requests值并设置一个keepalive_requests
答案 4 :(得分:0)
您可以修补NGINX
。以FastCGI
为例,添加
if (strcmp((char *)h->key.data, "Connection") == 0 && strcmp((char *)h->value.data, "close") == 0) {
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "Set Connection: close");
r->keepalive = 0;
}
在src/http/modules/ngx_http_fastcgi_module.c
行1977中,在标题解析器之后。