Windows系统下Nginx反向代理Tomcat集群

Windows系统下Nginx反向代理Tomcat集群


环境要求

  • jdk环境 (我使用的是1.8版本)
  • 两台Tomcat以上服务器(我使用的是Tomcat7版本)
  • windows版Nginx压缩包(我使用的是1.8版本,Nginx下载地址)

1.将两个Tomcat服务器放在同一目录下(最好使用同一版本),修改端口号,务必使两个服务器的所有端口(不只是修改8080端口,也需要修改server.xml中的其他端口)不一致。我的Tomcat1使用端口号为8090,Tomcat2使用的端口号为8000。
这里写图片描述
2.创建一个web项目,在WebContent中添加一个index.jsp文件。项目目录结构以及index.html中的内容如下所示,访问时输出当前会话的id。

Windows系统下Nginx反向代理Tomcat集群_第1张图片

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
    <h3>Tomcath3>
    <hr>
    <%= session.getId() %>
body>
html>

3.将该项目分别放置在两个Tomcat服务器下面的webapps目录下面,并修改index.jsp中标题标签中的内容,位于Tomcat1下面的将其改为Tomcat1,位于Tomcat2下面的将其改为Tomcat2。启动两个Tomcat,并分别访问index界面,确保能正确显示。
Windows系统下Nginx反向代理Tomcat集群_第2张图片
Windows系统下Nginx反向代理Tomcat集群_第3张图片
4.上面部署完两台Tomcat服务器,接下来部署Nginx服务器。将下载的Nginx压缩包解压,得到如下目录,双击nginx.exe程序,可以在windows任务管理器中看到nginx.exe程序已经启动,浏览器输入localhost,可以得到welcome字样。
Windows系统下Nginx反向代理Tomcat集群_第4张图片
5.接下来来配置代理,在nginx压缩包中,找到conf——>nginx.conf文件,编辑nginx.conf文件,在大概第35行左右的位置,在server{}代码块上添加upstream server_wisdom{}server_wisdom是名字,自己可以随便起,然后在代码块中添加Tomcat服务器地址。然后在location代码块中添加代理,proxy_pass http://server_wisdom; 如下图我注释的地方,将注释去掉即可。

    # upstream server_wisdom{
    #    server 127.0.0.1:8090;
    #    server 127.0.0.1:8000;
    # }
    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
            # proxy_pass http://server_wisdom;
        }

6.在任务管理器中将nginx.exe进程结束掉,重新启动nginx,此时在浏览器中输入localhost/test,便会展示index.jsp中的内容,刷新浏览器,你会看到tomcat1和tomcat2一直变化,并且下面的sessionid也在变化。

7.当用户访问浏览器时,刷新浏览器后sessionid便发生变化,这就意味着访问的服务器在一直变化,这是绝对不允许的,如何解决多台Tomcat服务器session共享问题。有三种解决方案,一是修改tomcat的server.xml和项目中的web.xml两个配置文件二是将sessionid放入redis中三是在nginx的配置文件中,在upstream中添加ip_hash

介绍一下第一种方法,这种方法也叫使用tomcat的广播机制完成session共享。

将两台tomcat服务器中server.xml配置文件中的集群命令放开,大概在在109行,将其复制出来即可。然后修改项目中的web.xml配置文件,加入一个< distributable />标签即可。重启两台Tomcat服务器,启动nginx服务,浏览器输入localhost/test,刷新后sessionid不会变化。
Windows系统下Nginx反向代理Tomcat集群_第5张图片

由于大部分服务器都是部署在linux系统当中,所以在此不再详细描述在windows系统中具体如何实现。

下一篇博客将继续学习Centos7系统下Nginx反向代理Tomcat集群,并解决sessionid共享问题。

你可能感兴趣的:(Linux,Nginx)