使用nginx反向代理进行负载均衡

在这里简单记录一下,我使用Nginx反向代理进行负载均衡,将请求发送到两台tomcat上。

首先解压两个tomcat,解压Nginx,一台tomcat配置可以不用动,但是我为了更方便只是将它的端口改为91:

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

并在这个tomcat的默认index.jsp中加一句话 I am tomcat1:

<div id="congrats" class="curved container">
<h2>If you're seeing this, you've successfully installed Tomcat. Congratulations! I am tomcat1</h2>
</div>

输入http://localhost:91可以正常看到如下界面这台tomcat算是起开了。

使用nginx反向代理进行负载均衡

另一台tomcat就需要多处改动了,不过也就是将所有的redirectPort和port改为没有使用的端口,不然就会因为端口被占用而起不开了,因为本地已经有一个tomcat在运行了。这里我贴一个摘出来的tomcat的server.xml修改处配置:

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

<Connector port="92" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8450" /> <Connector port="8010" protocol="AJP/1.3" redirectPort="8450" />

没错,这个tomcat我修改为92端口,同时修改tomcat的默认主页,添加一句“I am tomcat2“。ok,输入http://localhost:92可以正常访问

使用nginx反向代理进行负载均衡

最后来配置Nginx配置文件conf/Nginx.conf,在location元素下配置个proxy_pass:

使用nginx反向代理进行负载均衡

location元素后面的表达式支持正则匹配,这里使用/表明所有以此符号结尾的请求都会进这个location中,我们可以在server中配置多个location,它们之间根据先后顺序进行匹配,前面匹配到后面的就不会再匹配了。在这里,所有进来的请求代理到http://test  ,这个test在upsteam元素配置,我们可以在upstream中配置多个server,这两个server正是两台tomcat的地址,运行Nginx,输入http://localhost即可完成反向代理。不断刷新可以看到两个tomcat的主页在来回切换。

ps:如果在测试的时候,修改配置文件并重启Nginx并不起效,可以去看看任务管理器的详细信息里是不是有多个Nginx在运行,默认情况下,只有两个Nginx服务。

常见Nginx命令(进入到Nginx安装目录下执行命令):

start nginx        启动nginx
nginx -s stop 快速关闭Nginx,可能不保存相关信息。
nginx -s quit 平稳关闭Nginx,保存相关信息。
nginx -s reload 重新加载nginx。
nginx -v 显示 nginx 的版本。
nginx -t 检查配置文件是否正确,修改配置文件之后建议先使用该命令检查一下。
上一篇:EventStore的设计思路


下一篇:Mysql ODBC 5.1 Driver免安装脚本