使用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算是起开了。
另一台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配置文件conf/Nginx.conf,在location元素下配置个proxy_pass:
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 检查配置文件是否正确,修改配置文件之后建议先使用该命令检查一下。