16 nginx实现负载均衡

一:nginx实现负载均衡
-----------------原理--------------------------

 (1) 反向代理后端如果有多台服务器,自然可形成负载均衡,但proxy_pass如何指向多台服务器?

  答:把多台服务器用 upstream指定绑定在一起并起个组名,然后proxy_pass指向该组

 (2)默认的均衡的算法很简单,就是针对后端服务器的顺序,逐个请求.也有其他负载均衡算法,如一致性哈希,需要安装第3方模块

 -----------------------------------------------

实现过程[假设以图片服务器为案例]:

(1)开启http信息头记录

  log_format main '$remote_addr - $remote_user [$time_local] "$request" '

  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';

(2)定义服务组

upstream imgserver{

  #max_fails 连接2次 fail_timeout 超过多长时间超时
  server 127.0.0.1:81 weight=1 max_fails=2 fail_timeout=3;
  server 127.0.0.1:82 weight=1 max_fails=2 fail_timeout=3;

}

(3)指向服务器组名

location ~* .(jpg|jpeg|gif|png)$ {

  #设置http信息头 记录来源地址
  proxy_set_header X-Forwarded-For $remote_addr;
  #指向图片服务器组名
  proxy_pass http://imgserver;

}

(4)建立两台虚拟服务器

server{

  listen 81;
  server_name 127.0.0.1;
  root html;
  #写入日志
  access_log logs/81-access.log main;

}
server{

  listen 82;
  server_name 127.0.0.1;
  root html;
  #写入日志
  access_log logs/81-access.log main;
}

(5)解析php程序

location ~ .php$ {
  #增加http信息头 显示来源地址。
  proxy_set_header X-Forwarded-For $remote_addr;
  proxy_pass http://127.0.0.1:8080;

}

 
原文地址:https://www.cnblogs.com/hgj123/p/4266817.html