Nginx通常使用upstream和http_proxy_module这两个模块来实现负载均衡的需求 。

1、upstream_module模块

upstream_module模块用来定义可被引用的服务器组,该模块应放于nginx.conf配置文件的http{}标签内

weight=number

服务权重值,默认为1,数值越大,访问概率越高

max_conns=number

配置服务器同时连接的最大连接数,默认为0,即无限制

max_fails=number

配置与服务器尝试重连次数。默认为1,0表示禁用重连,一般配置2-3次,

fail_timeout=number

连接超时时间,默认为10s

backup

将该服务器设置为备用服务器,当主服务器不可用时,会将不可用信息传递到备用服务器

2、http_proxy_module模块

proxy_pass url

将请求转发给后端服务器主机

proxy_connect_timeout

指定后端服务器连接超时时间

proxy_buffer_size

指定缓冲区的大小,默认大小与proxy_buffers的值大小相同

proxy_temp_file_write_size

指定proxy缓冲临时文件的大小

proxy_set_header value

设置http请求header项传给后端服务节点,例如:可实现让代理后端的服务节点获取访问客户端用户的真实IP地址,以及让后端服务器得知访问的哪一个server虚拟主机

proxy_ssl_certificate file

指定使用证书的目录路径

proxy_ssl_certificate_key file

指定使用秘钥文件的目录路径

proxy_send_timeout

表示代理后端服务器的数据回传时间,即在规定时间之内后端服务器必须传完所有的数据,否则Nginx将断开这个连接

proxy_pass http://halo;					
#请求转发到upstream定义的server_pools中去
proxy_set_header Host $host;
#反向代理服务器请求节点服务器时,在http请求头中加入host字段信息,
用以指定访问的是节点服务器的哪一个虚拟主机,当节点服务器存在多个
虚拟主机时,该参数非常重要;
proxy_set_header X-Forwarded-For $remote_addr;		
#反向代理服务器请求节点服务器时,在http请求头中加入X-Forwarded-For
字段信息,这样后端节点服务器的日志就能正常记录得客户端的ip地址信息了,
而不是记录代理服务器的ip,这需要在节点服务器的日志添加$http_x_forwarded_for,
为了简单化主配置文件,可以使用include proxy.conf的方式把配置参数添加进来。