nginx+tomcat 实现反向代理及负载均衡

来源:互联网 发布:qq飞车沙皇数据 编辑:程序博客网 时间:2024/05/16 08:18

环境搭建:一台nginx服务器 两台tomcat服务器nginx的安装可以参考我的另一篇博客《nginx安装》tomcat依赖于jdk
nginx 服务器 192.168.10.229:80
tomcat1 192.168.10.229:8080
tomcat2 192.168.10.194:8080
安装jdk ,首先下载jdk的压缩包,放在/usr/java/目录下,解压缩。建立一个软连接

root@ubuntu:/usr/java/jdk1.7.0_79# ln -s /usr/java/jdk1.7.0_79/ /usr/jdk1.7

配置环境变量,在/etc/profile中加入

root@ubuntu:/usr/java/jdk1.7.0_79# vi /etc/profileJAVA_HOME=/usr/jdk1.7CLASSPATH=.:$JAVA_HOME/lib/PATH=$PATH:$JAVA_HOME/binexport PATH JAVA_HOME CLASSPATH

注意CLASSPATH=.:$JAVA_HOME/lib/ 前面的.:不要忘记了,否则在执行java 命令时会出现找不到main方法
重启或执行

root@ubuntu:/usr/java/jdk1.7.0_79# source /etc/profileroot@ubuntu:/usr/java/jdk1.7.0_79# 

查看java版本

root@ubuntu:/usr/java/jdk1.7.0_79# java -versionjava version "1.7.0_79"Java(TM) SE Runtime Environment (build 1.7.0_79-b15)Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)root@ubuntu:/usr/java/jdk1.7.0_79# javac -versionjavac 1.7.0_79root@ubuntu:/usr/java/jdk1.7.0_79# 

编写一个helloworld

root@ubuntu:/usr/java/jdk1.7.0_79# vi HelloWorld.javaclass HelloWorld{        public static void main(String[] args){                System.out.println("HelloWorld");        }}

编译执行

root@ubuntu:/usr/java/jdk1.7.0_79# javac HelloWorld.javaroot@ubuntu:/usr/java/jdk1.7.0_79# java HelloWorldHelloWorldroot@ubuntu:/usr/java/jdk1.7.0_79#

成功
下载两个tomcat 放在两台不同的服务器上,注意tomcat版本与jdk版本相对应,没有两台服务器就用不同的端口表示(server.xml所有的port都需要与另一个tomcat端口不一样)。我这里没有修改端口,默认为8080

分别在tomcat 目录下的webapps/ROOT目录下新建一个tomcat.html文件

tomcat1root@ubuntu:/usr/local/tomcat/apache-tomcat-6.0.47/webapps/ROOT# vi tomcat.html<h1>tomcat1</h1tomcat2root@ubuntu:/usr/tomcat/apache-tomcat-7.0.72/webapps/ROOT# vi tomcat.html<h1>tomcat2</h1>

启动两个tomcat

root@ubuntu:/usr/local/tomcat/apache-tomcat-6.0.47/bin# ./startup.sh Using CATALINA_BASE:   /usr/local/tomcat/apache-tomcat-6.0.47Using CATALINA_HOME:   /usr/local/tomcat/apache-tomcat-6.0.47Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-6.0.47/tempUsing JRE_HOME:        /usr/jdkUsing CLASSPATH:       /usr/local/tomcat/apache-tomcat-6.0.47/bin/bootstrap.jarroot@ubuntu:/usr/local/tomcat/apache-tomcat-6.0.47/bin# root@ubuntu:/usr/tomcat/apache-tomcat-7.0.72/bin# ./startup.sh Using CATALINA_BASE:   /usr/tomcat/apache-tomcat-7.0.72Using CATALINA_HOME:   /usr/tomcat/apache-tomcat-7.0.72Using CATALINA_TMPDIR: /usr/tomcat/apache-tomcat-7.0.72/tempUsing JRE_HOME:        /usr/jdk1.7Using CLASSPATH:       /usr/tomcat/apache-tomcat-7.0.72/bin/bootstrap.jar:/usr/tomcat/apache-tomcat-7.0.72/bin/tomcat-juli.jarTomcat started.root@ubuntu:/usr/tomcat/apache-tomcat-7.0.72/bin#

启动成功
这里写图片描述
这里写图片描述

修改nginx.conf配置文件 添加

 upstream tomcats{            server 192.168.10.229:8080;            server 192.168.10.194:8080;        }        server {          listen     801;          server_name 192.168.10.229;          location / {             proxy_pass   http://tomcats;          }        }

因为80端口被其他应用占用,这里我用801端口。location / 匹配任何路径,proxy_pass表示当路径匹配时 由tomcats去处理(http://表示 http服务,是url的前缀)tomcats 指向upstream tomcats 。如果有多个服务器,可以在upstream tomcats 中添加多个server,每一个server还可以通过weight 设置权重。nginx采用轮询的方式保证负载均衡。譬如输入http://192.168.10.229:801/url/tomcat.html 实际是由http://192.168.10.229:8080/url/tomcat.html和http://192.168.10.194:8080/url/tomcat.html 来处理请求。

重启nginx

现在通过访问nginx服务器来实验
这里写图片描述
这里写图片描述

0 0
原创粉丝点击