nginx+tomocat实现简单的反向代理


一、快速安装nginx反向代理tomcat  


实验环境:在一台服务器上安装一台nginx+3台tomcat,通过修改tomcat端口号实现反向代理


127.0.0.1         nginx

127.0.0.1:8080    tomcat1

127.0.0.1:8081    tocmat2

127.0.0.1:8082    tomcat3


如果没有实现常链接可能是版本不兼容




1.安装nginx所需软件包


# yum -y install java pcre pcre-devel library gzip

 zlib zlib-devel openssl gcc 


2.安装jdk1.7 和tomcat6.0.41和nginx1.4.7


# wget http://download.oracle.com/......


# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-6/v6.0.41/bin/apache-tomcat-6.0.41.tar.gz


# wget http://nginx.org/download/nginx-1.4.7.tar.gz


3.解压jdk到/usr/loca/下


  并配置jdk环境变量 


#vi .bash_profile                              /// 修改当前用户的环境变量  


JAVA_HOME=/usr/local/jdk1.7.0_71                      /// jdk的安装目录    

PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

export PATH JAVA_HOME                                 ///每次启动tomcat都会从                                                       JAVA_HOME去执行


4.使环境变量生效

#source /etc/profile

#java -version


5.解压tomcat到/usr/local/下

 


7.启动tomcat


#cd /usr/local/apache-tomcat-6.0.41/bin/


可以看日志


cd /usr/local/apache-tomcat3/apache-tomcat-6.0.41/logs/catalina.out

#./startup.sh


8.http://ip:8080访问tomcat


9.解压nginx到/usr/local/下并编译安装


保持连接模块需要下载 nginx_upstream_jvm_route 这个插件

结合js模块需要下载   nginx-http-concat 这个插件


 

先执行patch -p0 </app/nginx_upstream_jvm_route/jvm_route.patch    //使会话保持模块生效



#./configure --prefix=/usr/local/nginx --add-module=/app/wodsy/soft/nginx_upstream_jvm_route(会话保持模块)

   --add-module=/app/wodsy/soft/nginx-http-concat(结合js模块)


 #make && make install


10. 修改nginx配置文件


#vi /usr/local/nginx/conf/nginx.conf


upstream www.benet.com  {                        //www.benet.com下定义的主机群

    server 192.168.204.128:8080;

    server 192.168.204.129:8080;

    server 192.168.204.130:8080;

}

    server {

        listen       80;                         //侦听nginx的端口号

        server_name  www.benet.com;              //访问的域名  


        location / {                             //跟(/)下的所有

            proxy_pass   http://www.benet.com;   //跳转到 www.benet.com

        }

【以上的解释是】

   

当访问www.benet.com下的跟(/)下的所有文件时,则,通过【proxy_pass】跳转到www.benet.com,并由【upstream】调度www.benet.com下的机群地址

   



参数说明:

     

     【upstream】 开始调度机群

使用格式

      upstream www.xxx.com {

    server   ip:port;

    server   ip:port;

    server   .......

}

     【server】       开始配置虚拟主机

     【listen】       侦听nginx端口号

     【server_name】  虚拟主机域名(被访问的域名)

     【location】     定义访问的目录

     【proxy_pass】   定义要跳转到哪里


11.保存并启动nginx

#cd /usr/local/nginx/sbin/

#./nginx

#ps -axu | grep nginx


12.如果没做域名解析,则,在hosts文件里面知道域名对应ip,客户端也要指定

#vi /etc/hosts

192.168.204.128    www.benet.com

13:访问http://www.benet.com 实现对192.168.204.128-130的轮询访问


二、在一台服务器上通过修改端口开启多台tomcat


1.之前有安装过一台tomcat,再安装tomcat2和tomcat3时,只需要拷贝tomcat1安装目录到其他目录并修改端口号即可


【tomcat1】 /usr/local/apache-tomcat1/

【tomcat2】 /usr/local/apache-tomcat2/

【tomcat3】 /usr/local/apache-tomcat3/




3.修改tomcat端口号


【进入第一个tomato配置文件(保持默认)】

#vi /usr/local/apache-tomcat1/apache-tomcat-6.0.41/conf/server.xml


第一处:<Server port="8005" shutdown="SHUTDOWN">

第二处:<Connector port="8080" protocol="HTTP/1.1"

第三处:<!-- Define an AJP 1.3 Connector on port 8009 -->

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

【进入第二个tomato配置文件】


第一处:<Server port="8006" shutdown="SHUTDOWN">  【8005改为8006】

第二处:<Connector port="8081" protocol="HTTP/1.1"【8080改为8081】  

第三处:<!-- Define an AJP 1.3 Connector on port 8009 -->

    <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />【8009改为8010】


【进入第三个tomato配置文件】


第一处:<Server port="8007" shutdown="SHUTDOWN">  【8005改为8007】

第二处:<Connector port="8082" protocol="HTTP/1.1"【8080改为8082】  

第三处:<!-- Define an AJP 1.3 Connector on port 8009 -->

    <Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />【8009改为8011】


之后就可以启动tomcat并访问了




【nginx_upstream_jvm_route的使用】




nginx_upstream_jvm_route 是一个 Nginx 的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能。


安装方法(进入Nginx源码目录):


#patch -p0 < /path/to/this/directory/jvm_route.patch       //使常链接生效


# ./configure --prefix=/usr/nginx-0.8.1 --with-http_stub_status_module --add-module=/path/to/this/directory/


#make


#make install



例如以下配置:


1. 进入nginx的配置文件修改以下:


upstream www.benet.com {

    server 192.168.0.100:8080 srun_id=a;      srun_id这个值必须对应tomcat配置文件的nginx_upstream_jvm_route的值

    server 192.168.0.101:8081 srun_id=b;

    server 192.168.0.102:8082 srun_id=c;

    server 192.168.0.103:8083 srun_id=d;


   jvm_route $cookie_JSESSIONID|jsessionid reverse;

}


2. 进入tomcat配置文件修改以下:


将 


<!-- You should set jvmRoute to support load-balancing via AJP ie :

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="JVM">

    -->

    <Engine name="Catalina" defaultHost="localhost">


改为


<!-- You should set jvmRoute to support load-balancing via AJP ie :

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="JVM">

    -->

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">  tomcat1就是nginx中srun_id 对应的值



nginx平滑重启


nginx -t -c /usr/local/nginx/conf/nginx.conf


你可能感兴趣的:(java,服务器,library,软件包)