Skip to content

Connection: keep-alive

明显的预知用户会在当前连接上有下一步操作时开启 keep-alive,复用连接。

什么时候不用

访问内联资源一般用缓存,不需要开启 keep-alive,能够减少无效的资源占用。

配置

  • keepalive_time

    限制一个开启 keep-alive 的 TCP 连接的最大连接时间。1.19.10新功能。

  • keepalive_timeout

    用于设置 Nginx 服务器与客户端保持连接的超时时间,设置为 0 时表示关闭 keep-alive。

    keepalive_timeout 65 65,配置两个数字会在响应头中添加字段 Keep-Alive: timeout=65 表示 HTTP1.0 开启长连接。

  • send_timeout

    两次向客户端写操作之间的间隔 如果大于这个时间则关闭连接,默认为 60s。注意耗时的同步 操作值设置得太小有可能导致丢弃用户连接。

  • keepalive_requests

    单个连接中可处理的请求数,默认 1000。

  • keepalive_disable

    不对某些浏览器建立长连接,默认 msie6。

nginx
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout 65 65;

    upstream httpds {
	      sticky;
        server 192.168.44.102;
        server 192.168.44.103;
    }

    server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass http://httpds;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

上游服务器配置 keep-alive

在 upstream 中所配置的上游服务器默认都是短连接,即每次请求都会在完成之后断开。

nginx
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout 65;

    upstream httpds {
	    keepalive 100;
        keepalive_timeout 65;
        keepalive_requests 1000;
        server 192.168.44.102;
        server 192.168.44.103;
    }

    server {
        # 配置 http 版本号
        proxy_http_version 1.1;
        # nginx 转发给上游服务器时会将 Connection 设置为 close
        # 需要手动设置为 "" 表示清除 close 或 设置为 keep-alice 开启长连接
        proxy_set_header Connection "";
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass http://httpds;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}