這篇文章大致講解了用Nginx+Tomcat+Spring+Redis實現分佈式session。
Spring項目地址:https://github.com/hshenCode/spring_redis_exercise
1. 系統拓撲
- 1臺Redis服務器,用來存儲session。
- 2臺Tomcat服務器,訪問Redis進行session存儲。
- 1臺Nginx服務器,作爲反向代理以及負載均衡器,把請求轉發到Tomcat服務器上
- 用戶直接訪問Nginx服務器
2. Nginx作爲反向代理
upstream web_app{
server ip1:port;
server ip2:port;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://web_app;
proxy_set_header X-Real-IP $remote_addr;
}
}
3.使用Redis存儲Session
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="${redis.maxTotal}"/>
<property name="maxIdle" value="${redis.maxIdle}"/>
<property name="maxWaitMillis" value="${redis.maxWaitMillis}"/>
<property name="testOnBorrow" value="${redis.testOnBorrow}"/>
</bean>
<bean id="jedisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="${redis.host}"/>
<property name="port" value="${redis.port}"/>
<property name="timeout" value="${redis.timeout}"/>
<property name="poolConfig" ref="jedisPoolConfig"/>
</bean>
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="jedisConnectionFactory"/>
</bean>
<bean id="redisHttpSessionConfiguration"
class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">
<property name="maxInactiveIntervalInSeconds" value="1800"/>
</bean>
這個配置是什麼意思呢?