nginx常用配置解析
1、常用公共参数(一般放在http下面,虽然很多参数都支持server和location)
keepalive_timeout 60; #单位为s
keepalive_request 2; #设置与客户端在上述超时次数才真正断开连接;
tcp_nodelay off; #用于设置是否允许套接字TCP_NODELAY,默认为on; tcp_nodelay 作用是用于设置数据包尽快发送数据; 和tcp_nodelay相反,如果启用了 buffer,建议关闭 tcp_nodelay
tcp_nopush on; #用于设置是否允许套接字TCP_NOPUSH,默认为off; tcp_nopush 的作用就是 数据包会累计到一定大小之后才会发送;
send_timeout 10; #用于设置与客户端建立tcp握手的超时时间
send_file on; #用于设置是否启用sendfile()函数,常用是设置为on;
client_max_body_size 100m; #用于设置允许接受的客户端请求内容的最大值,超过这个值将返回http 413
client_body_buffer_size 128k; #用于指定客户端请求内容(用户内容)的缓冲大小,如果客户端请求内容大于设置值,将启用临时文件
client_body_temp_path /usr/local/nginx/client_body_temp/ ; #设置client_body_buffer_size临时文件目录
client_head_buffer_size 20k ; #用于缓冲客户端的请求头(头体Request Header),如果带cookie的话,需要特别注意加大点,默认值为1kn
server_names_hash_max_size 512; #用于限制server_name 的hash大小,粗暴理解就是server_name的字节长度r
server_tokens off; #主要用于设置响应头中nginx版本的显示,off代表关闭,on开启,默认配置on,基于安全考虑,一般选择off;
gzip on;
gzip_buffers 4 8k; #用于设置几个单位的缓存用于存储gzip的压缩结果流,如果未设置,将获取与需要压缩的文件大小一样的内存;
gzip_comp_level 1; #用于设置压缩比,可设置参数为1-9,1最快,但压缩比例小,9最慢,但压缩比例大;
gzip_min_length 1k; #设置超过多大的内容需要进行压缩,默认是0,一般设置为1K;
下列这些模块设置的需根据生产场景来设置位置
add_header name value; #用于在响应头中添加指定的头和值;可以设置多个,需要分行设置;
add_header name1 value1;
add_header Cache-Control no-store,no-cache; #用于通知浏览器不缓存
expires time|epoch|max|off; #用于设置http响应头中Expires和Cache-Control头的值
#time: 即设置时间长短,如果设置为-1,则表示为永远过期;
proxy相关配置:
proxy_hide_header header_name; #用来隐藏后端被代理的服务器响应头,nginx返回给客户端的响应头里将不会出现被隐藏的头;
proxy_pass_header header_name; #用于指定某些默认被nginx禁止转发的响应头可以进行转发;
proxy_pass ; #用来指定后端代理地址
proxy_set_header name value ; #用于重新定义或添加从客户端过来的请求头 ,然后再发给后端被代理服务器
proxy_redirect off; #用于更改后端被代理服务器的响应头中的location,默认值为off;
proxy_connect_timeout #用于指定跟后端服务器连接的超时时间,发起握手至等候响应的时间 单位s 默认60
proxy_read_timeout #用于指定跟后端服务器建立了TCP连接,至TCP连接状态为ESTABLIASHED时间 单位s 默认60
proxy_send_timeout #用于指定后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据 单位s 默认60
proxy_buffer_size 4k; #用于指定一个处理后端响应的header的缓存的大小,可用来nginx做规则匹配处理
proxy_buffers 4 32k; #指定一个处理后端代理服务器返回主体 应答(response的网页结果)的buffer 的数量和大小
proxy_cookie_path /proxy_path /; #将客户端的请求头中的cookie代理至后端
总结:对于响应头的修改 locatio<server<http ,即当在location中设置了某些响应头,如果server中有修改,则以server为最终结果,如果http中再次设置,则以http中为准;