centos七、 jdk1.八、nginx、redis、springboot 1.5.8.RELEASEjava
添加spring session和redis依賴nginx
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session</artifactId> </dependency>
application.properties配置git
# session 存入 redis spring.session.store-type=redis # redis config spring.redis.database=0 spring.redis.host=127.0.0.1 spring.redis.port=6379 spring.redis.password=123456 spring.redis.pool.max-active=8 spring.redis.pool.max-wait=20000 spring.redis.pool.max-idle=8 spring.redis.pool.min-idle=0 spring.redis.timeout=0
此處redis密碼設置爲123456github
測試代碼redis
@RequestMapping("user") @RestController public class UserController { @GetMapping("getSessionId") public String getSessionId(HttpServletRequest request) { String sessionId = request.getSession().getId(); System.out.println(sessionId); return sessionId; } }
項目完整代碼下載地址:[springboot-session-redis]: https://github.com/linj6/springboot-learn/tree/master/springboot-session-redisspring
nginx.conf配置centos
http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream springboot-session-redis { server 127.0.0.1:8081; server 127.0.0.1:8082; server 127.0.0.1:8083; } server { listen 80; server_name localhost; location / { proxy_pass http://springboot-session-redis; proxy_set_header Host $host; # 此配置使得服務端能夠獲取客戶端真實ip proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_redirect off; } } }
啓動redisspringboot
systemctl start redis
啓動三個應用服務bash
使用maven打包成jar包後 ,在後臺運行三個服務,端口分別爲808一、808二、8083,日誌分別輸出到nohup.out、nohup2.out、nohup3.outsession
nohup java -jar springboot-session-redis-0.0.1-SNAPSHOT.jar --server.port=8081 > nohup.out &
nohup java -jar springboot-session-redis-0.0.1-SNAPSHOT.jar --server.port=8082 > nohup2.out &
nohup java -jar springboot-session-redis-0.0.1-SNAPSHOT.jar --server.port=8083 > nohup3.out &
啓動nginx
訪問http://ip/user/getSessionId
頁面顯示sessionId的值
nginx默認負載均衡策略是採用輪詢,此處啓動了三個服務,因此訪問三次該網址,查看三個服務的日誌,會發現每一個服務處理了一次請求。
以下圖:
nohup.out
nohup2.out
nohup3.out
從上圖可知三次輸出的sessionId的值也是同樣的,因此實現了session共享,也經過nginx實現了負載均衡。
查看redis存儲的值
能夠看到生成了三個與spring session相關的key