知识点

         使用nginx(port 80)负载均衡 两个tomcat(port 8081、8082)

 

Nginx 下载地址:http://nginx.org/en/download.html        

选择稳定版本Stableversion     nginx/Windows-1.10.2

网上参考书:http://tengine.taobao.org/book/

硬件环境 VMware中Windows Service 2008 版
软件版本 tomcat7、nginx、测试页面
详细
1.  更改本地host记录 为www.lushunde.com做测试
a)   更改windows的host地址
2.  配置tomcat  port:8081
a)   添加测试页面
一个项目放在两个tomcat里,每个主页添加上<h1>port:808*</h1>来区分是哪个tomcat处理的请求。
b)   配置service.xml的conf文件。

例:使用8081端口配置tomcat(注意四点改变)

<Server port="8001"shutdown="SHUTDOWN">


<Connector port="8081"protocol="HTTP/1.1"    connectionTimeout="20000"           redirectPort="8443"/>

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

<ContextdocBase="C:\tomcat\apache-tomcat-7.0.69-8081\webapps\mrlu"path="" />

      

<?xmlversion='1.0' encoding='utf-8'?>
 
<Server port="8001"shutdown="SHUTDOWN">
 <ListenerclassName="org.apache.catalina.startup.VersionLoggerListener" />
 <Listener className="org.apache.catalina.core.AprLifecycleListener"SSLEngine="on" />
 <ListenerclassName="org.apache.catalina.core.JasperListener" />
 <ListenerclassName="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
 <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
 <ListenerclassName="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
 
 <GlobalNamingResources>
   <Resource name="UserDatabase" auth="Container"
             type="org.apache.catalina.UserDatabase"
              description="User databasethat can be updated and saved"
             factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
             pathname="conf/tomcat-users.xml" />
 </GlobalNamingResources>
 <Service name="Catalina">
    <Connector port="8081"protocol="HTTP/1.1"
              connectionTimeout="20000"
               redirectPort="8443"/>
   <Connector port="8091"protocol="AJP/1.3" redirectPort="8443" />
   <Engine name="Catalina"defaultHost="localhost">
     <RealmclassName="org.apache.catalina.realm.LockOutRealm">
       <RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"
              resourceName="UserDatabase"/>
     </Realm>
 
     <Host name="localhost" appBase="webapps"
           unpackWARs="true" autoDeploy="true">
                   <ContextdocBase="C:\tomcat\apache-tomcat-7.0.69-8081\webapps\mrlu"path="" />
       <ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="logs"
               prefix="localhost_access_log."suffix=".txt"
               pattern="%h %l %u %t"%r" %s %b" />
 
     </Host>
   </Engine>
 </Service>
</Server>



 

在配置一个8082的tomcat,其他都一样

 

通过浏览器输入www.lushunde.com:8081  访问8081的tomcat,主页显示 port:8081

                            输入www.lushunde.com:8082  访问8082的tomcat,主页显示 port:8082

 

两个tomcat可以直接访问并区分显示即可。

3.  配置nginx负载均衡两个tomcat
a)   Nginx的启动重启关闭命令

启动双击nginx.exe文件即可

启动Cmd 命令行到nginx根目录  start nginx

重启 Cmd 命令行到nginx根目录  nginx –s reload

退出Cmd 命令行到nginx根目录nginx.exe -s quit

关闭Cmd 命令行到nginx根目录  nginx –s stop

查看nginx运行状况

b)   配置文件 nginx.conf


#用户组,一般linux中使用
#user nobody;
#使用进程数,一般等于cpu进程数
worker_processes  2;
 
#error_log logs/error.log;
#error_log logs/error.log  notice;
#error_log logs/error.log  info;
 
#pid       logs/nginx.pid;
 
#事件,每个进程可以产生的线程数
events {
    worker_connections  1024;
}
 
 
http {
   include       mime.types;  
   default_type application/octet-stream;
 
   #log_format  main  '$remote_addr - $remote_user [$time_local]"$request" '
   #                  '$status$body_bytes_sent "$http_referer" '
   #                 '"$http_user_agent" "$http_x_forwarded_for"';
 
   #access_log  logs/access.log  main;
 
   sendfile        on;
   #tcp_nopush     on;
 
   #keepalive_timeout  0;
    keepalive_timeout  65;
 
   #gzip  on;
        
         #集群地址或者端口或者域名,负载均衡使用
         upstream www.lushunde.com {
                   #此处为轮询策略 换成你自己的tomcat地址
                   #可以根据自己的需求配置多个tomcat,当某个地址无效时,nginx会自动切换
                   server 127.0.0.1:8081;
                   server 127.0.0.1:8082;
         }
        
   server {
                   #nginx监听
        listen       80;
                   #nginx监听的域名或者地址
        server_name  www.lushunde.com;
 
       #charset koi8-r;
 
       #access_log logs/host.access.log  main;
                  
                  
                  
                   #nginx监听到请求发往地址,一般是上面upstream定义的负载均衡的地址名称,负载均衡
        location / {
                            proxy_passhttp://www.lushunde.com;
                            proxy_connect_timeout600;
                            proxy_read_timeout600;
        }
 
       
       error_page   500 502 503 504  /50x.html;
       location = /50x.html {
           root   html;
       }
 
       
    }
}



 

此时启动nginx和tomcat之后,可以通过www.lushunde.com查看,默认访问tomcat为轮询机制做的负载均衡。

4.配置nginx返回测试页面下静态资源
在nginx.conf配置文件下添加以下代码。
#此颜色主要是由nginx处理静态页面
		location ~.*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)${
                    	#root后面的是静态资源根目录,相当于tomcat中的项目跟路径,将静态资源以相同目录形式放置到这里即可
			root ./html;
                  	#expires定义用户浏览器缓存的时间为7天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力
                   	expires      7d;
               }




          

 

然后重载nginx后访问,此时tomcat中将没有html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css文件请求,只有其他请求。