用nginx进行同一个服务器下多域名的负载均衡配置

时间:2023-03-09 23:31:35
用nginx进行同一个服务器下多域名的负载均衡配置

用nginx进行同一个服务器下多域名的负载均衡配置

Nginx进行http负载均衡的模块是upstream

Upstream可以进行多个配置,这样的话可以灵活的配置站点,但是注意的是upstream后面的名字最好是配置成为域名,因为upstream是进行http访问的,一般的解析没有问题,但是如果是ajax的解析就会通过访问upstream后面的名字来进行访问了,这里要注意。

修改配置文件:conf/nginx.conf

  1. #需要进行负载均衡的站点
  2. #其中server是其中负载均衡的一个节点www.aaa.com
  3. upstream www.aaa.com {
  4. server 192.168.0.1: weight=;
  5. server 192.168.0.2: weight=;
  6. server 192.168.0.1: weight=;
  7. }
  8. #第二个网站的www.bbb.com的负载均衡的节点
  9. upstream www.bbb.com {
  10. server 192.168.1.1: ;
  11. server 192.168.1.2: ;
  12. server 192.168.1.3: ;
  13. ip_hash;
  14. }
  15. #同一服务器转发个不同域名进行负载均衡
  16. #www.aaa.com的server
  17. server
  18. {
  19. listen       ;
  20. server_name  www.aaa.com;
  21. location / {
  22. index  index.html index.jsp;
  23. #这里的proxy_pass转发的是upstream的名字www.aaa.com
  24. proxy_pass  http://www.aaa.com;
  25. proxy_set_header    X-Real-IP   $remote_addr;
  26. client_max_body_size    100m;
  27. }
  28. #limit_conn   crawler  ;
  29. }
  30. server
  31. {
  32. listen       ;
  33. server_name  www.bbb.com;
  34. location / {
  35. index  index.html index.jsp;
  36. #这里的proxy_pass转发的是upstream的名字www.bbb.com
  37. proxy_pass  http://www.bbb.com;
  38. proxy_set_header    X-Real-IP   $remote_addr;
  39. client_max_body_size    100m;
  40. }
  41. #limit_conn   crawler  ;
  42. }
#需要进行负载均衡的站点
#其中server是其中负载均衡的一个节点www.aaa.com
upstream www.aaa.com {
server 192.168.0.1:8080 weight=1;
server 192.168.0.2:8080 weight=2;
server 192.168.0.1:8081 weight=3; } #第二个网站的www.bbb.com的负载均衡的节点
upstream www.bbb.com {
server 192.168.1.1:8080 ;
server 192.168.1.2:8080 ;
server 192.168.1.3:8080 ;
ip_hash;
} #同一服务器转发2个不同域名进行负载均衡
#www.aaa.com的server
server
{
listen 80;
server_name www.aaa.com; location / {
index index.html index.jsp;
#这里的proxy_pass转发的是upstream的名字www.aaa.com
proxy_pass http://www.aaa.com;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
} #limit_conn crawler 20; } server
{
listen 80;
server_name www.bbb.com; location / {
index index.html index.jsp;
#这里的proxy_pass转发的是upstream的名字www.bbb.com
proxy_pass http://www.bbb.com;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
} #limit_conn crawler 20; }

Upstream的server详细配置:

(具体配置信息查看:http://www.howtocn.org/nginx:nginx%E6%A8%A1%E5%9D%97%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C%E4%B8%AD%E6%96%87%E7%89%88:standardhttpmodules:httpupstream

§  weight = NUMBER - 设置服务器权重,默认为1。

§  max_fails = NUMBER - 在一定时间内(这个时间在fail_timeout参数中设置)检查这个服务器是否可用时产生的最多失败请求数,默认为1,将其设置为0可以关闭检查,这些错误在proxy_next_upstream或fastcgi_next_upstream(404错误不会使max_fails增加)中定义。

§  fail_timeout = TIME - 在这个时间内产生了max_fails所设置大小的失败尝试连接请求后这个服务器可能不可用,同样它指定了服务器不可用的时间(在下一次尝试连接请求发起之前),默认为10秒,fail_timeout与前端响应时间没有直接关系,不过可以使用proxy_connect_timeout和proxy_read_timeout来控制。

§ down - 标记服务器处于离线状态,通常和ip_hash一起使用。

§ backup - (0.6.7或更高)如果所有的非备份服务器都宕机或繁忙,则使用本服务器(无法和ip_hash指令搭配使用)。