欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springsession nginx反向代理集成過程

 更新時間:2020年04月22日 08:39:49   作者:知識追尋者  
這篇文章主要介紹了Springsession nginx反向代理集成過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

一概述

springsession 配置,如果是sevlet的web應(yīng)用后會自動集成 jdbc ,redis,Hazelcast,MongoDB

二session概述

2.1 分布式項目的session問題

在分布式項目中如果客戶端給服務(wù)端發(fā)送了一個請求,在nginx做反向代理的情況下,第一個請求可能到達(dá)tomcat1,此時tomcat1就會創(chuàng)建一個session然后將響應(yīng)給客戶端;同理客戶端再次發(fā)送一個請求,然后nginx又做了一次反向代理,此時的請求可能到達(dá)tomcat2,此時tomcat2會建立一個session響應(yīng)給客戶端;那么問題就產(chǎn)生了,同一個客戶端發(fā)了2個請求,結(jié)果造成兩次會話的數(shù)據(jù)不一致。

2.2主流的解決方案

針對2.1分布式session共享問題,當(dāng)代主流的解決方案是使用redis做session以達(dá)到session共享的目的。請求達(dá)到不同的tomcat之后都會往同一個redis中寫數(shù)據(jù), 當(dāng)tomcat響應(yīng)數(shù)據(jù)的時候就會往同一個redis中讀數(shù)據(jù) 以前我們需要手動的將tomcat獲得的session數(shù)據(jù)存到redis,響應(yīng)的時候再去redis中取數(shù)據(jù)?,F(xiàn)在springsession會自動幫我們的數(shù)據(jù)從tomcat中同步到redis,或者自動的從redis中取數(shù)據(jù)。

三session共享實現(xiàn)方案

3.1環(huán)境說明

1jdk1.8

2redis5.05

3idea工具

4maven構(gòu)建

5springboot 2.1.1

3.2pom.xml

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.1.1.RELEASE</version>
  <relativePath/>
</parent>
<dependencies>
  <!-- redis啟動器-->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
  </dependency>
  <!-- web啟動器-->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <!-- spring session啟動器 -->
  <dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
  </dependency>
</dependencies>

3.3application.yml

spring:
 redis:
  host: 192.168.0.104
  port: 6379
  database: 0
 session:
  store-type: redis
  redis:
   cleanup-cron: 0 1 * * * *

3.4controller

package com.youku1327.spring.session.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;

/**
 * @Author lsc
 * @Description //spring session
 * @Date 2019/9/22 14:01
 * @Version 1.0
 */
@RestController
public class SpringSessionController {

  @GetMapping("set/spring/session")
  public String setSpringSession(HttpSession httpSession){
    httpSession.setAttribute("user","youku1327");
    System.out.println("設(shè)置session");
    return "set spring session success";
  }
  @GetMapping("get/spring/session")
  public String getSpringSession(HttpSession httpSession){
    httpSession.setAttribute("user","youku1327");
    System.out.println("響應(yīng)session");
    return httpSession.getAttribute("user").toString();
  }
}

3.5啟動類

package com.youku1327.spring.session;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
 * @Author lsc
 * @Description //
 * @Date 2019/9/22 13:29
 * @Version 1.0
 */
@SpringBootApplication
public class SpringSessionApplication {
​
  public static void main(String[] args) {
    SpringApplication.run(SpringSessionApplication.class,args);
  }
}

3.6啟動兩個實例

3.7測試

訪問8080端口設(shè)置session


訪問8083端口獲得session

3.8默認(rèn)是spring:session做為key前綴有需要改變可以在yml中配置

四nginx反向代理說明

在nginx安裝目錄的conf文件夾的nginx.conf

 server {
    listen    端口;
    server_name 發(fā)布項目的ip地址;

    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;

    location / {
            proxy_pass 轉(zhuǎn)發(fā)的ip地址;
            proxy_connect_timeout 600;
            proxy_read_timeout 600;
    }
  }

配置2個server 分別 監(jiān)聽 8080 8083 端口 配置轉(zhuǎn)發(fā)ip ,好后退出保存 nginx -s reload

我們就可以不同的訪問轉(zhuǎn)發(fā)ip實現(xiàn)nginx的反向代理

五參考文檔

https://docs.spring.io/spring-boot/docs/2.0.0.RELEASE/reference/htmlsingle/

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決feignClient調(diào)用時獲取返回對象類型匹配的問題

    解決feignClient調(diào)用時獲取返回對象類型匹配的問題

    這篇文章主要介紹了解決feignClient調(diào)用時獲取返回對象類型匹配的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java實現(xiàn)的小時鐘示例分享

    java實現(xiàn)的小時鐘示例分享

    這篇文章主要介紹了java實現(xiàn)的小時鐘示例,需要的朋友可以參考下
    2014-02-02
  • Spring中的@Pointcut切點詳解

    Spring中的@Pointcut切點詳解

    這篇文章主要介紹了Spring中的@Pointcut切點詳解,pointcut就是切點,通知需要在哪些方法處進(jìn)行增強(qiáng),在AspectJ中用@Pointcut注解表達(dá)式標(biāo)注,需要的朋友可以參考下
    2023-08-08
  • 詳解Java實現(xiàn)緩存(LRU,FIFO)

    詳解Java實現(xiàn)緩存(LRU,FIFO)

    本篇文章主要介紹了詳解Java實現(xiàn)緩存(LRU,FIFO) ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • SpringBoot啟動過程的實現(xiàn)

    SpringBoot啟動過程的實現(xiàn)

    這篇文章主要介紹了SpringBoot啟動過程的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • IDEA編寫JavaWeb出現(xiàn)亂碼問題解決方案

    IDEA編寫JavaWeb出現(xiàn)亂碼問題解決方案

    這篇文章主要介紹了IDEA編寫JavaWeb出現(xiàn)亂碼問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • 深入了解Java SpringBoot自動裝配原理

    深入了解Java SpringBoot自動裝配原理

    在使用springboot時,很多配置我們都沒有做,都是springboot在幫我們完成,這很大一部分歸功于springboot自動裝配。本文將詳細(xì)為大家講解SpringBoot的自動裝配原理,需要的可以參考一下
    2022-03-03
  • 深入XPath的詳解以及Java示例代碼分析

    深入XPath的詳解以及Java示例代碼分析

    本篇文章是對XPath進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 淺談java中==以及equals方法的用法

    淺談java中==以及equals方法的用法

    這篇文章主要介紹了淺談java中==以及equals方法的用法,涉及二者的用法示例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • java 多線程實現(xiàn)在線咨詢(udp)

    java 多線程實現(xiàn)在線咨詢(udp)

    這篇文章主要介紹了java 多線程實現(xiàn)在線咨詢(udp)的示例,幫助大家更好的理解和學(xué)習(xí)Java 網(wǎng)絡(luò)編程的相關(guān)內(nèi)容,感興趣的朋友可以了解下
    2020-11-11

最新評論