客户端长连接

Nginx与客户端是默认长连接的,在http请求中,一般情况下,客户端不会主动关闭tcp连接,所以tcp连接完全受到Nginx控制,一些配置可以设置连接的属性

  1. keepalive_disable :设置不与哪些浏览器建立长连接,默认值为msie6(禁用与旧版本MSIE的保持活动连接),可选值还有safari (在macOS和类似macOS的操作系统上禁用与safari和类似safari的浏览器的保持活动连接),none(启用与所有浏览器的保持活动连接)
  2. keepalive_requests:设置一个长连接上最大请求数量,默认值为1000
  3. keepalive_time:长连接最大时间,默认为1小时
  4. keepalive_timeout:长连接超时时间,默认为75秒,与keepalive_time不同的是,keepalive_timeout是两次信息传输最大的间隔时间,如果间隔时间超过它,就会断开连接

服务端长连接

与客户端不同,Nginx与服务端之间默认不会保持长连接,在请求完成之后,就会关闭连接,需要通过upstream开启长连接,也就是如果需要和服务端打开长连接必须使用到upstream,所有相关长连接的配置也都是在upstream下面的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
upstream server {
server 127.0.0.1:8081;

keepalive 16;
}

server {
...

location /http/ {
proxy_pass http://server;
proxy_http_version 1.1;
proxy_set_header Connection "";
...
}
}
  1. keepalive:最大保持长连接数,这个配置是没有默认值,一旦配置就相当于打开了与服务端的长连接,而具体的值就是Nginx与服务端可以保持多少个长连接,如果已经达到配置的值,那么新的连接在请求完之后会自动关闭。在开启长连接的情况下,在转发http请求时时需要加上proxy_http_version 1.1、proxy_set_header Connection “”配置或者proxy_set_header Connection “Keep-Alive”,这是因为无论客户端的Connection请求头是什么,Nginx代理转发后会变成close,所以需要显式设置代理Connection请求头
  2. keepalive_requests:设置一个长连接上最大请求数量,默认值为1000
  3. keepalive_time:长连接最大时间,默认为1小时
  4. keepalive_timeout:长连接超时时间,默认60秒,与keepalive_time不同的是,keepalive_timeout是两次信息传输最大的间隔时间,如果间隔时间超过它,就会断开连接

本站总访问量:次本站总访问数:人
本站由 Peng Tong 使用 Stellar 1.29.1 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。