windows系统下配置Nginx反向代理多tomcat共享session

nginx、tomcat下载安装本篇不提了,直接说步骤:

1 配置nginx配置文件:

nginx下conf文件夹中的nginx.conf 添加下面代码,

  upstream web_apps{
            server      127.0.0.1:8080 weight=1;
            server      127.0.0.1:8989 weight=1;
        }
server {
            listen 80;
            server_name  localhost 127.0.0.1;

            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Requested-For $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;

            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";

            location / {
			root	html;
			index	index.html;
			 proxy_pass      http://web_apps;
			proxy_connect_timeout 600;
			proxy_read_timeout 600;
            }

    }

  

2配置tomcat 配置文件:

修改tomcat下conf中 server.xml

多个tomcat 中有3地方要不能冲突:

    <!-- 1-->
<Server port="19999" shutdown="SHUTDOWN"> 

    <!-- 2 -->
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"/>

 <!-- 3 -->
 <Connector port="9999" protocol="AJP/1.3" redirectPort="8443" />

 port可以设大一点。

  然后每个加上tomcat自带的session同步 找到<Engine name="Catalina" defaultHost="localhost">关键句下面添加

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
        channelSendOptions="8">

 <Manager className="org.apache.catalina.ha.session.DeltaManager"
          expireSessionsOnShutdown="false"
          notifyListenersOnReplication="true"/>

 <Channel className="org.apache.catalina.tribes.group.GroupChannel">
   <Membership className="org.apache.catalina.tribes.membership.McastService"
               address="228.0.0.4"
               port="45564"
               frequency="500"
               dropTime="3000"/>
   <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
             address="auto"
             port="4000"
             autoBind="100"
             selectorTimeout="5000"
             maxThreads="6"/>

   <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
   <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
   </Sender>
   <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
           <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
         </Channel>

         <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                filter=""/>
         <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

         <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                   tempDir="/tmp/war-temp/"
                   deployDir="/tmp/war-deploy/"
                   watchDir="/tmp/war-listen/"
                   watchEnabled="false"/>

         <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>

  然后把tomcat初始页码换一下方便测试效果,在apache-tomcat\webapps\ROOT 更改index.jsp内容为

<html>
        <head>
                <title> test</title>

        </head>

        <body>
        SessionID is <%=session.getId()%>
        <br/>

        SessionIP is <%=request.getServerName()%>
        <br/>

        SessionPort is <%=request.getServerPort()%>
		<!-- 端口号依次修改为:8080/8989-->
        <h1>tomcat_8080</h1>

</body>

</html>

  然后分别启动tomcat 和nginx 。

  直接输入localhost就如下图

或者是这样:

tomcat服务器会被nginx切换 但sessionID没有变。

另外说个nginx个操作指令 :cmd黑窗口进入nginx目录输入  nginx -s reload 会重新载入nginx的配置文件,不用重启nginx.

如果出现异常先去看log文件 tomcat和nginx日志很详细。比如我遇到的:

19-Jun-2019 10:42:12.779 警告 [main] org.apache.catalina.startup.Catalina.load Unable to load server configuration from [D:\apache-tomcat-9.0.17\conf\server.xml]
org.xml.sax.SAXParseException; systemId: file:/D:/apache-tomcat-9.0.17/conf/server.xml; lineNumber: 154; columnNumber: 113; Error at line [154] column [113]: [org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor]
at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:1855)
at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:1887)
at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1176)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1339)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1431)
at org.apache.catalina.startup.Catalina.load(Catalina.java:567)
at org.apache.catalina.startup.Catalina.load(Catalina.java:608)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:306)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:491)
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:115)
at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1173)
... 20 more

这个包已过时不在了,配上去肯定不行。。

参考博客:

https://www.cnblogs.com/beyang/p/9122406.html

https://blog.csdn.net/qq_23832313/article/details/83578813

over~

原文地址:https://www.cnblogs.com/xddbky/p/11050446.html

时间: 2024-07-29 21:34:30

windows系统下配置Nginx反向代理多tomcat共享session的相关文章

linux下配置nginx反向代理例子

官方说明: 例子: 虚拟机ip:192.168.85.3,物理机VMware Network Adapter VMnet8  ip:192.168.85.1 1,准备tomcat 准备一tomcat,端口,8080 准备一Jsp,用于获取客户端真实IP和nginx IP ,test.jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UT

配置LANMP环境(7)-- 配置nginx反向代理,与配置apache虚拟主机

一.配置nginx反向代理 1.修改配置文件 vim /etc/nginx/nginx.conf 在35行http下添加一下内容: include /data/nginx/vhosts/*.conf; include /etc/nginx/upstream.conf; 2.在/etc/nginx/目录下新建 upstream.conf文件 vim upstream.conf upstream dev.test1.com { server 127.0.0.1(换成虚拟机ip):8080 weigh

CentOS 7 学习(二) 配置Nginx反向代理

Nginx可以通过php-fpm来运行PHP程序,也可以转向apache,让apache调用php程序来运行. 不过对于Nginx来说,其反向代理功能更值得研究,下面配置一下让Nginx反向代理3台Apache服务器,同时配置memcache作为session保存路径1.环境 CentOS 7 ,192.168.1.14, Apache 80, Nginx 808 CentOs 7 ,192.168.1.12,Apache 80 Ubuntu 14.04 Server, 192.168.1.16

相同Ip 不同端口配置Nginx反向代理Apache

相同Ip  不同端口 配置Nginx反向代理Apache(就是Nginx跳转到Apache) 在linux 一经搭建好环境  先后安装了Nginx  和Apache 由于 默认端口都是:80 一般客户请求的服务器端口默认为80  所以Nginx作为静态页端口设置:80 Apache设置端口为:8080(在httpd.conf  文件中修改Listen:8080) 如何跳转: 在nginx.conf中 添加 location / { proxy_pass http://202.85.224.166

Nginx系列-11.配置Nginx反向代理和负载均衡

Nginx系列-11.配置Nginx反向代理和负载均衡 目录 - Nginx系列 Nginx系列-1.Linux下安装Nginx Nginx系列-2.配置LNMP(Linux.Nginx.MySQL.PHP)架构 Nginx系列-3.配置Nginx虚拟主机 Nginx系列-4.Nginx日志配置及日志切割 Nginx系列-5.配置Nginx的防盗链 Nginx系列-6.配置Nginx的HTTPS Nginx系列-7.配置Nginx使用uwsgi支持web.py框架 Nginx系列-8.配置Ngi

Windows系统下配置Git

时间:2014.08.01 地点:基地 ------------------------------------------------------------------------------------- 一.下载安装 1.官网下载Windows版的Git安装包: 2.安装过程中部分设置如下: 3.其它的默认即可,直至Finish --------------------------------------------------------------------------------

[nginx]Windows和Mac下,nginx反向代理服务器配置

最近做项目,前端需要用到nginx反向代理来转发请求,总结了一下在Windows和Mac上的配置,以备查询. 一.Windows 修改nginx的配置文件,nginx.conf. 1)nginx.conf文件,http下,默认打开的server只有一个,监听的是80端口: 1 http{ 2 XXXXX 3 server{ 4 listen 80; 5 XXXX 6 } 7 } 2)我们手动添加一个server(虚拟机),这样本地使用假数据来模拟请求json文件时,不会因为跨域而请求不到. 1

ASP.NET Core 2.1发布/部署到Ubuntu并配置Nginx反向代理实现ip访问

一.准备 我用的是Ubuntu服务器器 [Ubuntu 18.04 x64] 和终端管理工具[Xshell] 二.安装 在服务器上安装.NET Core 三.部署程序 1.创建实例程序 可以直接使用.NET Core 的命令创建一个ASP.NET Core 示例网站应用程序,创建目录 /home/myuser/firstapp,执行命令: dotnet new mvc 接着,发布刚才创建的ASP.NET Core 网站发网站目录,所以,我们先创建一个网站发布目录:/var/www/firstap

使用NTLM的windows身份验证的nginx反向代理

一次项目中使用开源nginx反向代理NTLM的windows身份验证出现反复登陆框,最终分析属于keepalive 在NTLM认证过程中发生变化导致. 据此,将nginx.conf 配置修改如下 worker_processes auto; worker_rlimit_nofile 65535; events { worker_connections 65535; } http { include mime.types; default_type application/octet-stream