springboot 응용 nginx 부하, sso 로그 인 분실 session 문제.

2003 단어 nginx
환경: springboot 프로젝트 + nginx 부하 
최근 프로젝트 가 출시 되면 서 정식 환경 에 배 치 된 후 SSO 로그 인 에 문제 가 생 겨 며칠 째 어려움 을 겪 고 있다.
다음은 다음 문 제 를 살 펴 보 겠 습 니 다. spring boot 프로젝트 는 sso 로그 인 을 통합 하여 정식 환경 에 배치 합 니 다. 단일 응용 서비스 가 시 작 된 후에 정상 적 인 sso 로그 인 을 합 니 다. 더 블 응용 프로그램 이 시 작 된 후에 첫 번 째 로그 인 은 정상 적 이 고 두 번 째 SSO 로그 인 은 우리 의 springboot 프로젝트 자체 로그 인 입구 로 이동 합 니 다.각종 사고 테스트 의 최종 포 지 셔 닝 문 제 는 session 이나 쿠키 분실 이다.
이 유 는 Nginx 프로필 에 ip 가 하나 덜 설정 되 어 있 기 때 문 입 니 다.hash 로 인 한:
IP_HASP 정책 설명: nginx 의 upstream 은 기본적으로 폴 링 방식 으로 부하 균형 을 실현 합 니 다. 이 방식 에서 모든 요청 은 시간 순서에 따라 서로 다른 백 엔 드 서버 에 할당 되 며 백 엔 드 서버 다운 이 떨 어 지면 자동 으로 제거 할 수 있 습 니 다.다른 방식 은 iphash: 모든 요청 은 ip 에 접근 하 는 hash 결과 에 따라 분 배 됩 니 다. 그러면 모든 방문객 이 백 엔 드 서버 에 고정 적 으로 접근 하면 session 문 제 를 해결 할 수 있 습 니 다.
아래 에 nginx 중요 코드 를 첨부 합 니 다:
 upstream portal_server {
      
      server    192.168.1.11:8080  max_fails=2 fail_timeout=30s;
      server    192.168.1.12:8080  max_fails=3 fail_timeout=30s; 
      ip_hash;
    }

     upstream sso_server {
      server   192.168.1.11:8080  max_fails=2 fail_timeout=30s;
      server   192.168.1.12:8080   max_fails=3 fail_timeout=30s;
      ip_hash; #        ,            session   
    }

    server  {
        listen       80;
        server_name  xxxxx.com.cn;
		
		location / { 
			proxy_pass   http://portal_server/;
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
		location /sso/ticket { 
			proxy_pass   http://sso_server/sso/ticket;
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
		  
  }
  server  {
        listen       80;
        server_name  13;
		
		location / { 
			proxy_pass   http://portal_server/;
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
		 
   }

좋은 웹페이지 즐겨찾기