Nginx 에서 공유 session 세 션 설정 방법 예

2576 단어
세 션 은 일반적으로 시간 대 를 가리킨다.컴퓨터 용어 에서 Session 은 터미널 사용자 와 인 터 랙 션 시스템 이 통신 하 는 시간 간격 을 말 합 니 다. 보통 등록 에서 시스템 에 들 어 가 는 것 부터 로그아웃 시스템 에 들 어 가 는 데 걸 리 는 시간 과 필요 하 다 면 일정한 조작 공간 이 있 을 수 있 습 니 다.
세 션 은 일반적으로 시간 대 를 가리킨다.컴퓨터 용어 에서 Session 은 터미널 사용자 와 인 터 랙 션 시스템 이 통신 하 는 시간 간격 을 말 합 니 다. 보통 등록 에서 시스템 에 들 어 가 는 것 부터 로그아웃 시스템 에 들 어 가 는 데 걸 리 는 시간 과 필요 하 다 면 일정한 조작 공간 이 있 을 수 있 습 니 다.
일반적으로 session 을 쿠키 로 바 꿀 수 있 으 면 session 의 일부 단점 을 피 할 수 있 습 니 다. 예전 에 본 J2EE 의 책 에서 도 클 러 스 터 시스템 에서 session 을 사용 할 수 없고 그렇지 않 으 면 화 를 일 으 키 면 쉽 지 않다 고 지적 합 니 다.시스템 이 복잡 하지 않 으 면 세 션 을 없 앨 수 있 는 지, 바 꾸 기 가 매우 번 거 로 우 면 다음 방법 을 사용 하 세 요.
응용 서버 자체 공유
이미 알 고 있 는 것 처럼 php 는 데이터베이스 나 memcached 로 session 을 저장 할 수 있 고 php 자체 에 session 군집 을 만 들 었 습 니 다. 이런 방식 으로 session 을 안정 시 킬 수 있 습 니 다. 특정한 노드 가 고장 나 도 session 을 잃 어 버 리 지 않 고 비교적 엄격 하지만 요 구 량 이 높 지 않 은 장소 에 적 용 됩 니 다.그러나 효율 이 높 지 않 아 효율 에 대한 요구 가 높 은 장소 에는 적용 되 지 않 는 다.
상기 두 가지 방법 은 모두 nginx 와 아무런 관계 가 없습니다. 다음은 nginx 로 어떻게 처리 해 야 하 는 지 말씀 드 리 겠 습 니 다.
ip_hash
nginx 의 iphash 기술 은 특정한 ip 의 요청 을 같은 백 엔 드 로 지정 할 수 있 습 니 다. 그러면 이 ip 아래 의 특정한 클 라 이언 트 와 특정한 백 엔 드 는 튼튼한 session, ip 을 만 들 수 있 습 니 다.hash 는 upstream 설정 에서 정의 합 니 다:
 
  
upstream backend{
server 127.0.0.1:8001;
server 127.0.0.1:8002;
ip_hash;
}

ip_hash 는 이해 하기 쉽 지만 ip 이라는 인자 로 백 엔 드 를 분배 할 수 있 기 때문에 iphash 는 결함 이 있 습 니 다. 일부 상황 에서 사용 할 수 없습니다.
1. nginx 는 최 전방 서버 가 아 닙 니 다.ip_hash 는 nginx 가 반드시 최 전방 서버 여야 합 니 다. 그렇지 않 으 면 nginx 가 정확 한 ip 을 얻 지 못 하면 ip 에 따라 hash 를 할 수 없습니다.예 를 들 어 squid 를 최 전방 으로 사용 하면 nginx 에서 ip 을 가 져 올 때 squid 의 서버 ip 주소 만 얻 을 수 있 습 니 다. 이 주소 로 분류 하 는 것 은 분명 잘못 되 었 습 니 다.
2. nginx 의 백 엔 드 는 다른 방식 의 부하 균형 도 있다.만약 nginx 백 엔 드 에 또 다른 부하 균형 이 있다 면 요청 을 다른 방식 으로 분류 하면 한 클 라 이언 트 의 요청 은 같은 session 응용 서버 에 위치 할 수 없습니다.이렇게 계산 하면 nginx 백 엔 드 는 응용 서버 를 가리 키 거나 squid 를 하나 더 만 든 다음 에 응용 서버 를 가리 킬 수 있 습 니 다.가장 좋 은 방법 은 location 으로 분 류 를 하 는 것 입 니 다. session 이 필요 한 부분 을 ip 로 요청 하 는 것 입 니 다.hash 분류, 나머지 는 다른 백 엔 드 로 갑 니 다.
upstream_hash
ip 해결 을 위해hash 의 일부 문제, upstream 사용 가능hash 이 제3자 모듈, 이 모듈 은 대부분 url 로 사 용 됩 니 다.hash 의, 그러나 그것 을 session 공유 에 사용 하 는 데 방해 가 되 지 않 습 니 다: 만약 전단 이 squid 라면, 그 는 ip 를 x 에 추가 할 것 입 니 다.forwarded_for this httpheader 에서 upstream 로hash 는 이 머리 를 인자 로 하여 지정 한 백 엔 드 로 요청 할 수 있 습 니 다.

   hash $http_x_forwarded_for; 
 

이렇게 해서 x 를 이용 하 는 것 으로 바 뀌 었 습 니 다.forwarded_for 이 헤드 는 인자 로 nginx 새 버 전에 서 쿠키 값 을 읽 을 수 있 기 때문에 다음 으로 변경 할 수 있 습 니 다.

   hash $cookie_jsessionid; 
 

좋은 웹페이지 즐겨찾기