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


 

 

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指令搭配使用)。