下面来说下nginx.conf 的部分参数,配置如下:
http {
include mime.types;
default_type application/octet-stream;
client_max_body_size 1000M;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 60;# 连接超时时间
send_timeout 60; # 指定 Nginx 向客户端发送响应数据的时间限制。一旦超时,连接将被视为断开。默认为 60s。
#test start
fastcgi_connect_timeout 300;# 连接超时时间
fastcgi_send_timeout 300;# 发送超时时间
fastcgi_read_timeout 300;# 读取超时时间
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
#test end
#gzip on;
1、proxy_connect_timeout
proxy_connect_timeout 5s;
proxy_connect_timeout指定与代理服务器的连接超时时间,包括TCP连接的建立和SOCKET连接的时间。在默认情况下,Nginx没有设置此选项,因此连接时间不会超时。当 Nginx 作为反向代理时,设置与上游服务器建立连接的超时时间。超时后,Nginx 将停止尝试连接。
2、proxy_send_timeout
proxy_send_timeout 10s;
proxy_send_timeout指定向后端服务器发送请求的超时时间,包括发送请求头和请求体的时间。如果后端服务器不能在此时间内响应,则代理服务器会返回504错误;控制 Nginx 从上游服务器读取数据和发送数据到上游的超时时间。前者控制写入数据的超时,后者则是读取数据的超时。
3、proxy_read_timeout
proxy_read_timeout 10s;
proxy_read_timeout指定代理服务器接收响应的超时时间。如果后端服务器不能在这个时间内返回响应,则Nginx会关闭连接,同时返回一个504 Gateway Time-out错误;控制 Nginx 从上游服务器读取数据和发送数据到上游的超时时间。前者控制写入数据的超时,后者则是读取数据的超时。
4、fastcgi_connect_timeout
fastcgi_connect_timeout 5s;
fastcgi_connect_timeout指定与FastCGI应用程序的连接超时时间,与proxy_connect_timeout具有相同的语法和功能。
5、fastcgi_send_timeout
fastcgi_send_timeout 10s;
fastcgi_send_timeout指定向FastCGI服务器发送请求的超时时间,与proxy_send_timeout具有相同的语法和功能。
6、fastcgi_read_timeout
fastcgi_read_timeout 10s;
fastcgi_read_timeout指定FastCGI服务器响应的超时时间,与proxy_read_timeout具有相同的语法和功能。
7、keepalive_timeout
keepalive_timeout 30s;
设定空闲 TCP 连接的保持时间。在最后一个请求完成后的这段时间内,连接不会关闭,可用于处理后续请求。这对于 HTTP/1.1 keep-alive 连接尤为重要。
8、keepalive_requests
keepalive_requests 100;
keepalive_requests指定每个Keepalive连接的最大请求次数。如果超过此数量,则连接会被关闭
9、client_max_body_size
client_max_body_size 100M;
默认 1M,表示客户端请求服务器最大允许大小,若超过所设定的大小,返回413错误。
10、client_body_buffer_size
client_body_buffer_size 10k;
Nginx分配给请求数据的Buffer大小,如果请求的数据小于client_body_buffer_size直接将数据先在内存中存储。如果请求的值大于client_body_buffer_size小于client_max_body_size,就会将数据先存储到临时文件中;定义客户端请求主体的最大大小。超过该值的请求会被拒绝。这对于防止 DoS 攻击或内存溢出很有帮助。
11、client_header_timeout
client_header_timeout 10s;
读取请求头的超时时间,若超过所设定的大小,返回408错误。
12、client_body_timeout
client_body_timeout 12;
读取请求实体的超时时间,若超过所设定的大小,返回413错误
13、tcp_nodelay
tcp_nodelay on;
设置为 on
可禁用 Nagle 算法,减少延迟,适合交互性强的服务。但会增加小包的数量,可能增加带宽使用。
14、后端服务器处理请求的时间设置
location / {
...
proxy_connect_timeout 60; # 秒,后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_read_timeout 150; # 秒,等候后端服务器响应时间_也可以说是后端服务器处理请求的时间
proxy_send_timeout 69; # 秒,后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
tcp_nodelay on;//一般不用配置
...
}