zhmg23

我们是如此的不同

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

评论