一、快速安装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