1.开篇
有关Nginx的下载安装、相关理论内容,这里就不再多说了,详情可以参考我的这几篇文章:
https://szh-forever-young.blog.csdn.net/article/details/117992752
https://szh-forever-young.blog.csdn.net/article/details/117998893
https://szh-forever-young.blog.csdn.net/article/details/117993883
下面直接进行反向代理和负载均衡的案例实操。
2.反向代理案例一
首先启动tomcat,端口号我修改为了8082。
然后转到nginx的配置文件nginx.conf,listen表示监听80端口,服务器ip为192.168.40.130,location则表示当收到192.168.40.130发来的请求时,做一次请求转发,转发到http://127.0.0.1:8082,也就是tomcat的官网首页。
3.反向代理案例二
首先启动两台tomcat,端口号分别为8081、8082。
分别在这两台tomcat的webapps目录下,创建一个文件,其中存放一个 a.html 的页面。
转到nginx的配置文件中,在server块中做如下配置,此时监听9001端口,服务器地址仍然是linux本机ip,下面两个location是指:当请求路径中包含tomcat1的时候将请求转发至指定的tomcat,当请求路径中包含tomcat2的时候将请求转发至另一台指定的tomcat。
修改完配置文件,这里先将nginx停掉,然后再次启动测试。
4.负载均衡
因为要做负载均衡,这个和反向代理不同。负载均衡是说当nginx收到某些请求时,会将这些请求按照一定的算法(轮询、权重值、ip hash等)来将这些请求均衡的分发到不同的tomcat服务器中。
所以我们这里首先要在两台tomcat的webapps目录下创建相同的目录tomcat,在其中创建好一个简单的html页面。
转到nginx的配置文件,upstream XXX表示的是数据转发块,也就是通过server块中的proxy_pass来搭配使用,当监听的地址:192.168.40.130:80(80可以省略不写)发来请求时,会根据proxy_pass定义的http://myServer做请求转发,而myServer中有两个地址分别对应两台tomcat,所以这些请求就被平摊到了这两台tomcat中。
修改完nginx.conf配置文件,我们将nginx停掉,再次重启测试。
第一次访问,nginx将该请求转发到了8082这台tomcat;刷新浏览器页面,可以看到nginx又将该请求转发到了8081这台tomcat。
同样的url,多次发出请求,并不是说一直是8081、或者一直是8082,而是8081一次、8082一次,其实这里默认采用了轮询算法,可以看到nginx为8081、8082这两台tomcat做了负载均衡。