最近自己搭了一套nginx的环境,集群部署了公司的一个项目,中间解决了session共享的问题。记录如下,以备日后查看。

1.环境

windows10 家庭中文版,jdk 7, tomcat 7.0.27 ,  nginx-1.10.1 windows,  Redis-x64-2.8.2402 windows.

tomcat 我拷贝了一份,并修改server.xml:

  1. <Server port="8006" shutdown="SHUTDOWN">
    <!-- Security listener. Documentation at /docs/config/listeners.html
  2. <Listener className="org.apache.catalina.security.SecurityListener" />
  3. -->
  4. <!--APR library loader. Documentation at /docs/apr.html -->
  5. <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  6. <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
  7. <Listener className="org.apache.catalina.core.JasperListener" />
  8. <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  9. <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  10. <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  11. <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  12.  
  13. <!-- Global JNDI resources
  14. Documentation at /docs/jndi-resources-howto.html
  15. -->
  16. <GlobalNamingResources>
  17. <!-- Editable user database that can also be used by
  18. UserDatabaseRealm to authenticate users
  19. -->
  20. <Resource name="UserDatabase" auth="Container"
  21. type="org.apache.catalina.UserDatabase"
  22. description="User database that can be updated and saved"
  23. factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
  24. pathname="conf/tomcat-users.xml" />
  25. </GlobalNamingResources>
  26.  
  27. <!-- A "Service" is a collection of one or more "Connectors" that share
  28. a single "Container" Note: A "Service" is not itself a "Container",
  29. so you may not define subcomponents such as "Valves" at this level.
  30. Documentation at /docs/config/service.html
  31. -->
  32. <Service name="Catalina">
  33.  
  34. <!--The connectors can use a shared executor, you can define one or more named thread pools-->
  35. <!--
  36. <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
  37. maxThreads="150" minSpareThreads="4"/>
  38. -->
  39.  
  40. <!-- A "Connector" represents an endpoint by which requests are received
  41. and responses are returned. Documentation at :
  42. Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
  43. Java AJP Connector: /docs/config/ajp.html
  44. APR (HTTP/AJP) Connector: /docs/apr.html
  45. Define a non-SSL HTTP/1.1 Connector on port 8080
  46. -->
  47. <Connector port="8081" protocol="HTTP/1.1"
  48. connectionTimeout="20000"
  49. redirectPort="8443" />
  50. <!-- A "Connector" using the shared thread pool-->
  51. <!--
  52. <Connector executor="tomcatThreadPool"
  53. port="8080" protocol="HTTP/1.1"
  54. connectionTimeout="20000"
  55. redirectPort="8443" />
  56. -->
  57. <!-- Define a SSL HTTP/1.1 Connector on port 8443
  58. This connector uses the JSSE configuration, when using APR, the
  59. connector should be using the OpenSSL style configuration
  60. described in the APR documentation -->
  61. <!--
  62. <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
  63. maxThreads="150" scheme="https" secure="true"
  64. clientAuth="false" sslProtocol="TLS" />
  65. -->
  66.  
  67. <!-- Define an AJP 1.3 Connector on port 8009 -->
  68. <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

这样,两个tmcat启起来就时两台服务器。

注意事项:windows用户必须用Administrator, 否则redis不能正常使用

2. redis依赖包

commons-pool2-2.2,jedis-2.5.2,tomcat-redis-session-manager-2.0.0 ,

注意事项:

如果使用jdk 6,启动时会提示 “java.lang.UnsupportedClassVersionError: com/orangefunction/tomcat/redissessions/RedisSessionHandlerValve : Unsupported major.minor version 51.0” , jdk7的版本号时51,所以应该是最小支持jdk7,其他版本的tomcat-redis-session-manager可能支持jdk的其他版本,大家自行实验。

3. nginx 主要配置

  1. #设定负载均衡的服务器列表
  2. upstream mysvr {
  3. server localhost:8080;
  4. server localhost:8081;
  5. #ip_hash;
  6. }
  7.  
  8. server {
  9. listen 80; #监听端口
  10. server_name cq.demo.com; #域名可以有多个,用空格隔开
  11. charset utf-8;
  12.  
  13. #access_log logs/host.access.log main;
  14.  
  15. location / {
  16. proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表
  17. proxy_set_header Host $host;
  18. proxy_set_header X-Real-IP $remote_addr;
  19. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  20. proxy_connect_timeout 10;
  21. proxy_read_timeout 10;
  22. proxy_send_timeout 10;
  23. }
  24.  
  25. # redirect server error pages to the static page /50x.html
  26. #
  27. error_page 500 502 503 504 /50x.html;
  28. location = /50x.html {
  29. root html;
  30. }
  31.  
  32. #静态文件,nginx自己处理
  33. location ~ .*\.(html|gif|jpg|jpeg|bmp|png|ico|txt|js|css|woff2|woff|ttf)$
  34. { root html/static;
  35. #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
  36. expires 30d;
  37. #proxy_pass http://mysvr;
  38. }
  39. }

4. tomcat修改context.xml配置

Context标签加入:

  1. <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
  2. <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
  3. host="localhost"
  4. port="6379"
  5. database="0"
  6. maxInactiveInterval="60" />

  

先写到这,比较乱,没有按照操作顺序,只是记录了操作中的重点,其实操作顺序是次要的,解决操作中遇到的问题才是最重要的。

nginx + tomcat + redis 部署项目,解决session共享问题。的更多相关文章

  1. nginx+tomcat+redis的集群+session共享

    nginx+tomcat+redis的集群+session共享 环境准备 1.tomcat版本:tomcat7 tomcat下载及安装,目前很多好的资源和步骤,此处省略. 2.jdk版本:jdk1.7 ...

  2. nginx+tomcat+redis负载均衡及session共享

    概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...

  3. Nginx+Tomcat+memcached负载均衡实现session共享

    http://blog.csdn.net/love_ubuntu/article/details/8464983 1.  安装各个软件不用说了. 2.  到tomcat的安装目录lib中,加入: me ...

  4. nginx之 nginx + tomcat + redis 负载均衡且session一致性

    说明: 本文描述的是 nginx + tomcat + redis 实现应用负载均衡且满足session一致性,从安装到配置的全部过程,供大家学习!nginx 代理服务器ip: 10.219.24.2 ...

  5. nginx+tomcat实现负载均衡以及session共享(linux centos7环境)

    一.nginx的安装 1.准备三份tomcat tomcat1 设置端口 8080 tomcat2 设置端口 8081 tomcat3 设置端口 8082 2. 下载nginx 3. 解压到/home ...

  6. Nginx+Tomcat+Memcached负载均衡和session共享

    1. 演示搭建 说明:本文参考网络日志http://blog.csdn.net/remote_roamer/article/details/51133790,结合实际操作,仅做个演示记录. 1.1.  ...

  7. 解决session共享问题

    方法一 使用Nginx让它绑定ip(没有共享所以就没有共享问题了) 配置Nginx upstream backserver { ip_hash; server localhost:8080; serv ...

  8. haproxy+tomcat实现负载均衡以及session共享(linux centos7环境)

    一.安装HAProxy 1.进入home目录,下载最新haproxy安装包. cd /home wget http://haproxy.1wt.eu/download/1.4/src/haproxy- ...

  9. Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享

    Nginx+Tomcat+Redis实现负载均衡.资源分离.session共享 CentOS安装Nginx http://centoscn.com/CentosServer/www/2013/0910 ...

随机推荐

  1. Hibernate哪点事?

    1.为什么在Hibernate的实体类中要提供一个无参数的构造器这一点非常重要?每个Hibernate实体类必须包含一个 无参数的构造器, 这是因为Hibernate框架要使用Reflection A ...

  2. Mysql中设置默认时间为当前值

    1.直接在创建表时添加该列并声明默认值,如下: CREATE TABLE `table1` ( `id` ) NOT NULL, `createtime` timestamp NULL default ...

  3. 谈一谈最近学了一段时间的node.js

    官方说明 1.NodeJS宣称其目标是“旨在提供一种简单的构建可伸缩网络程序的方法”. 2.node是一个基于Chrome V8引擎进行代码解释的.轻量.可伸缩的具有事件驱动和非阻塞I/O机制的js运 ...

  4. CSS1-3基礎知識

    CSS1-3基礎知識 1.css排版 css在html內排版: <style type='text/css'> 標記名{} .類型名{} #ID名{} 標記名,.類型名,#ID名{} &l ...

  5. 使用Spring的隐式注解和装配以及使用SpringTest框架

    SpringTestConfiguration 1.加入jar 包spring-test-4.3.9.RELEASE.jar 2.写基本的Component 注意级联状态下  需要给需要调用的属性加入 ...

  6. ASP.NET Core 认证与授权[1]:初识认证

    在ASP.NET 4.X 中,我们最常用的是Forms认证,它既可以用于局域网环境,也可用于互联网环境,有着非常广泛的使用.但是它很难进行扩展,更无法与第三方认证集成,因此,在 ASP.NET Cor ...

  7. 100%解决ios上audio不能自动播放的问题

    由于ios的安全机制问题,不允许audio和video自动播放,所以想要使audio标签自动播放那是实现不了的,即使给play()也是播放不了. 解决方法: 首先,创建audio标签:<audi ...

  8. iOS逆向环境以及常用命令行(逆向一)

    一.环境介绍 越狱环境:iPhone 5s iOS9.3.1 yueyu:~ root# uname -a Darwin yueyu 15.4.0 Darwin Kernel Version 15.4 ...

  9. Linux入门之常用命令(10)软连接 硬链接

    在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问. ...

  10. Sql Server——查询(二)

    上次写了查询里的一些简单的查询方法,如果说上次的是初级查询,那这次的就是高级查询了. 今天主要是聚合函数.分组查询.连接查询.联合查询.在我看来前三个挺简单的,稍微难理解点的也就最后一个,为什么呢?因 ...