- <?php
- //实例如下
- //代理服务器:www.web.com ==> 192.168.1.10
- //B服务器 ==> 192.168.1.36
- //C服务器 ==> 192.168.1.25
- //这个负载均衡的简单原理就是把一台服务器的压力分发到多台提供相同服务的服务器上,这里我们一般指web服务
- //比如我们访问www.web.com这个网站时,需要把它反向代理给B服务器和C服务器
- //所以在这里我们可以把www.web.com当成一个路由,只负责分发,不处理实际的代码逻辑
- //理解不当之处,还请多多指教
- http {
- upstream web.server{
- server 192.168.1.36:80 weight=2;
- server 192.168.1.25:80 weight=1;
- //server 192.168.1.36:80 weight=1 max_fails=3 fail_timeout=15s;
- //server 192.168.1.25:80 backup;
- //server 192.168.1.123:80 down;
- //在nginx配置文件中应该用#注释
- }
- server{
- listen 80;
- server_name www.web.com;
- location /{
- proxy_pass http://web.server;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- }
- }
- }
- //这样就配置成功了,比如访问http://www.web.com/info.php
- //在B服务器上编辑info.php的内容为 echo 'This is from balance server @ B';
- //在C服务器上编辑info.php的内容为 echo 'This is from balance server @ C';
- //那么就会根据upstream中设定的server按照weight的权重进行访问了,weight越大则访问到频率就越高
- //我在测试的时候是把C服务器放在windows上的,那么需要把windows防火墙关了方可访问
- /*upstream 支持的状态参数
- */
- /*
- down,表示当前的server暂时不参与负载均衡。
- backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
- max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
- fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
- */
- /*upstream 支持的负载均衡算法
- */
- /*
- 轮询(默认)。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。Weight 指定轮询权值,Weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。
- ip_hash。每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。
- fair。这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。
- url_hash。此方法按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。
- */
- Nginx的HttpProxy在这里:http://wiki.nginx.org/HttpProxyModule
- 文中参考资料来源于:http://freeloda.blog.51cto.com/2033581/1288553
- //该片段来自于http://www.codesnippet.cn/detail/2011201411009.html
来源: http://www.codesnippet.cn/detail/2011201411009.html