一、Nginx + Apache 通过反向代理实现负载均衡


一、Nginx简单介绍

Nginx是一种服务器软件,也是一种高性能的http和反向代理服务器,同时还是一个代理邮件服务器。也就是说,我们在Nginx上可以发布网站,可以实现负载均衡(提高应答效率,避免服务器崩溃),还可以作为邮件服务器实现收发邮件等功能。而最常见的就是使用Nginx实现负载均衡。  

 

Nginx反向代理的过程:

 一、Nginx + Apache 通过反向代理实现负载均衡

用户A始终认为它访问的是原始服务器B而不是代理服务器Z,但实用际上反向代理服务器接受用户A的应答,从原始资源服务器B中取得用户A的需求资源,然后发送给用户A。由于防火墙的作用,只允许代理服务器Z访问原始资源服务器B。尽管在这个虚拟的环境下,防火墙和反向代理的共同作用保护了原始资源服务器B,但用户A并不知情。 

Nginx负载均衡的过程会自动选择压力较小的服务器进行访问):

 一、Nginx + Apache 通过反向代理实现负载均衡

Nginx的应用

1、到官网下载Windows版本,下载地址:http://nginx.org/en/download.html

2、解压到磁盘任一目录

3、修改配置文件:具体参考备注。

4、启动服务:

直接运行nginx.exe,缺点控制台窗口关闭,服务关闭。

守护进程的方式启动:start nginx.exe

停止服务:nginx -s stop

重新加载配置:nginx -s  reload

 一、Nginx + Apache 通过反向代理实现负载均衡

最简单的配置实例(conf/nginx.conf):

worker_processes  1;    #工作进程数

events {

    worker_connections  1024;   #设置单个进程最大连接数

}

http {      

include       mime.types; #文件扩展名与文件类型映射表  

default_type  application/octet-stream;#默认文件类型  

sendfile        on;

keepalive_timeout  65; #长连接超时时间,单位是秒  

#主要是用于设置一组可以在proxy_passfastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询

upstream  cloudtest.com {

#weight权重,默认1,权重越大访问概率越大,backup备用服务器,服务器全部崩溃后启动

   server   127.0.0.1:8081   weight=2;

#server   127.0.0.1:8082   backup;

server   127.0.0.1:8080   weight=3;

}

server {

        listen       80;

        server_name  localhost;

location / {

            proxy_pass http://cloudtest.com;

            proxy_redirect default;

    }

}

 

二、Tomcat的准备工作

首先,由于我是在一台机器用Nginx + Tomcat,所以我需要修改tomcat配置,使Windows可以运行多台tomcat

只需要修改三个端口号(还未被使用的端口号)就可以了:

<Server port="8007" shutdown="SHUTDOWN"></Server>

<Connector port="8082" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />

 

三、运行结果

1、修改上面两个Tomcat的默认页面(为了区分下面到底访问的是那一台Tomcat,随便改一下即可)

2、启动自己配置好的Tomcat

3、切换到自己Nginx解压目录:start nginx

结果如下:

第一次访问,发现访问的是Tomcat1上的程序:

 一、Nginx + Apache 通过反向代理实现负载均衡

然后刷新几次,会交替访问Tomcat2和Tomcat1的程序:

 一、Nginx + Apache 通过反向代理实现负载均衡

四、总结

  谁能想到实现一个高性能的负载均衡集群会如此简单。Nginx的功能如此强大,配置却如此简单,我们还有什么理由拒绝它呢?这比我们动不动就十多万至几十万人民币的F5 BIG-IP、NetScaler等硬件负载均衡交换机廉价了不知多少。此外,大家别忘了Nginx不仅仅是一个反向代理服务器,它本身也可以托管网站,作为Web服务器,进行Http服务处理。