实例:

proxy.conf
http://upstream.mxs223.com/

  1. upstream serverStream{
  2. server 172.17.0.3:80;
  3. server 172.17.0.4:80;
  4. }
  5. server{
  6. listen 80;
  7. server_name upstream.mxs223.com;
  8. location /{
  9. proxy_pass http://serverStream;
  10. }
  11. }

1、轮询(weight=1)

默认选项,当weight不指定时,各服务器weight相同,
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

1、weight

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
如果后端服务器down掉,能自动剔除。
比如以下配置,则0.4服务器的访问量为0.3服务器的两倍。

  1. upstream serverStream{
  2. server 172.17.0.3:80 weight=1;
  3. server 172.17.0.4:80 weight=2;
  4. }

2、ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session不能跨服务器的问题。
如果后端服务器down掉,要手工down掉

  1. upstream serverStream{
  2. ip_hash;
  3. server 172.17.0.3:80;
  4. server 172.17.0.4:80;
  5. }


3、fair(第三方插件)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

  1. upstream serverStream{
  2. server 172.17.0.3:80;
  3. server 172.17.0.4:80;
  4. fair;
  5. }


4、url_hash(第三方)


按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

  1. upstream serverStream {
  2. server 172.17.0.3:80;
  3. server 172.17.0.4:80;
  4. hash $request_uri;
  5. hash_method crc32;
  6. }

1、down 表示单前的server暂时不参与负载
2、weight 权重,默认为1。 weight越大,负载的权重就越大。
3、max_fails 允许请求失败的次数默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4、fail_timeout max_fails次失败后,暂停的时间。
5、backup 备用服务器, 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

  1. upstream tel_img_stream {
  2. #ip_hash;
  3. server 192.168.11.68:20201;
  4. server 192.168.11.69:20201 weight=100 down;
  5. server 192.168.11.70:20201 weight=100;
  6. server 192.168.11.71:20201 weight=100 backup;
  7. server 192.168.11.72:20201 weight=100 max_fails=3 fail_timeout=30s;
  8. }

proxy_pass 结尾带/与不带/的区别

http://proxy.mxs223.com:8080/jrfr/index.html
http://proxy.mxs223.com:8080/jrft/index.html

  1. server{
  2. listen 80;
  3. server_name proxy.mxs223.com;
  4. location /jrfr{
  5. proxy_pass http://172.17.0.3;
  6. }
  7. location /jrft{
  8. proxy_pass http://172.17.0.3/;
  9. }
  10. }