nginx upstream使用参数
1、nginx的upstream几个常用参数upstream ahwap_services {
server 192.168.5.1:8080 max_fails=3 fail_timeout=30s;
server 192.168.5.2:8080 max_fails=3 fail_timeout=30s;
server 192.168.5.3:8080 max_fails=0 fail_timeout=30s;
server 192.168.5.5:8080 max_fails=3 fail_timeout=30s;
ip_hash;
keepalive 10000;
}
weight: 服务器权重,默认是1,weight 与 ip_hash 是不能同时使用的
max_conns:限制到代理服务器的同时活动连接的最大数量,默认值为零,表示没有限制。
max_fails:指令设置在fail_timeout期间内连续的失败尝试。 默认情况下,max_fails为1。如果被设置为0,该服务器的健康检测将禁用。
fail_timeout:参数还定义了多长时间服务器将被标记为失败。在fail_timeout后,服务器还是failed,nginx将检测该服务器是否存活,如果探测成功,将标记为活的。默认是10s
backup: 标记为备用服务器,主服务器不可用时,启用备服务器
down: 将服务器标记为不可用
如果想通过nginx日志,查看每个请求到后端哪台机器上,修改日志
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'$connection $upstream_addr '
'upstream_response_time $upstream_response_time request_time $request_time ';
加上上面标红部红,然后重新加载配置,即可看到每个请求到后端哪台机器上,而且请求耗时也可以看到。
我们在使用upstream添加服务器时,被添加的服务器环境一定要检查好,包括系统时间、后端web可用性,这里推荐一个
使用nginx_upstream_check_module模块。
2、nginx其他一些常用参数含义
proxy_http_version 1.1; #设置HTTP协议默认版本为1.1
proxy_set_header Connection "";
proxy_connect_timeout 120; #该指令设置与upstream server的连接超时时间,这个超时不能超过75秒
proxy_send_timeout 600; #表示后端服务器的数据回传时间,即在规定时间之内后端服务器必须传完所有的数据,否则,Nginx将断开这个连接。
proxy_read_timeout 600; #设置Nginx从代理的后端服务器获取信息的时间,表示连接建立成功后,Nginx等待后端服务器的响应时间,其实是Nginx已经进入后端的排队之中等候处理的时间。
proxy_buffer_size 256k; #设置缓冲区大小, 默认,该缓冲区大小等于指令proxy_buffers设置的大小。
proxy_buffers 4 256k; #设置缓冲区的数量和大小。nginx从代理的后端服务器获取的响应信息,会放置到缓冲区。
proxy_ignore_client_abort on; #默认为关闭,如果开启,客户端主动断掉连接之后,Nginx 会等待后端处理完(或者超时),然后 记录 「后端的返回信息」 到日志。所以,如果后端 返回 200, 就记录 200 ;如果后端放回 5XX ,那么就记录 5XX 。如果超时(默认60s,可以用 proxy_read_timeout 设置),Nginx 会主动断开连接,记录 504 。
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
参考:
https://nginx.org/en/docs/http/ngx_http_upstream_module.html
评论