여러 백엔드 서버에 동일한 요청을 보내는 Nginx 역방향 프록시

여러 백엔드 서버에 동일한 요청을 보내는 Nginx 역방향 프록시

역방향 프록시로 NGINX를 사용하고 업스트림 서버로 두 개의 Apache를 사용합니다.

example.com(NGINX로 이동)을 방문할 때마다 두 Apache 서버 모두 GET 요청을 받습니다. NGINX는 기본적으로 라운드 로빈 방식을 기반으로 작동하기 때문에 이상해 보입니다.

내 구성은 다음과 같습니다.

upstream apache {
         server 172.18.0.164;
         server 172.18.8.18;
        }


location / {
       proxy_pass http://apache;
    }

Apache 1 시스템에 로그인합니다.

192.168.10.236 - - [05/Oct/2015:07:59:21 -0400] "GET / HTTP/1.0" 200

Apache 2 시스템에 로그인합니다.

172.18.8.97 - - [05/Oct/2015:11:59:27 +0000] "GET /wordpress/ HTTP/1.0"

답변1

바로에서Nginx 관리 가이드:


세션 지속성 활성화

NGINX Plus는 세 가지 세션 지속성 방법을 지원합니다. 방법은 다음과 같이 설정됩니다.어려운지령.

그만큼끈적한 쿠키방법. 이 방법을 사용하면 NGINX Plus는 업스트림 그룹의 첫 번째 응답에 세션 쿠키를 추가하고 응답을 보낸 서버를 식별합니다. 클라이언트가 다음 요청을 발행하면 쿠키 값이 포함되며 NGINX Plus는 요청을 동일한 업스트림 서버로 라우팅합니다.

upstream backend {
    server backend1.example.com;
    server backend2.example.com;

  sticky cookie srv_id expires=1h domain=.example.com path=/;
}

예제에서 매개 srv_id변수는 설정되거나 검사될 쿠키의 이름을 설정합니다. 선택적 expires매개변수는 브라우저가 쿠키를 보관하는 시간을 설정합니다. 선택적 domain매개변수는 쿠키가 설정되는 도메인을 정의합니다. 선택적 path매개변수는 쿠키가 설정되는 경로를 정의합니다. 이는 가장 간단한 세션 지속 방법입니다.

그만큼끈적한 경로방법. 이 방법을 사용하면 NGINX Plus는 첫 번째 요청을 받을 때 클라이언트에 "경로"를 할당합니다. 모든 후속 요청은 다음과 비교됩니다.노선매개변수섬기는 사람요청이 프록시될 서버를 식별하는 지시어입니다. 경로 정보는 쿠키 또는 URI에서 가져옵니다.

upstream backend {
    server backend1.example.com route=a;
    server backend2.example.com route=b;

    sticky route $route_cookie $route_uri;
}

그만큼쿠키 학습방법. 이 방법을 사용하면 NGINX Plus는 먼저 요청과 응답을 검사하여 세션 식별자를 찾습니다. 그런 다음 NGINX Plus는 어떤 업스트림 서버가 어떤 세션 식별자에 해당하는지 "학습"합니다. 일반적으로 이러한 식별자는 HTTP 쿠키로 전달됩니다. 요청에 이미 "학습된" 세션 식별자가 포함되어 있는 경우 NGINX Plus는 요청을 해당 서버로 전달합니다.

upstream backend {
   server backend1.example.com;
   server backend2.example.com;

   sticky learn 
       create=$upstream_cookie_examplecookie
       lookup=$cookie_examplecookie
       zone=client_sessions:1m
       timeout=1h;
}

이 예에서는 업스트림 서버 중 하나가 응답에 "EXAMPLECOOKIE" 쿠키를 설정하여 세션을 생성합니다.

필수 매개변수는 create새 세션이 생성되는 방법을 나타내는 변수를 지정합니다. 이 예에서는 업스트림 서버에서 보낸 쿠키 "EXAMPLECOOKIE"에서 새 세션이 생성됩니다.

필수 매개변수는 lookup기존 세션을 검색하는 방법을 지정합니다. 이 예에서는 클라이언트가 보낸 쿠키 “EXAMPLECOOKIE”에서 기존 세션을 검색합니다.

필수 매개변수는 zone고정 세션에 대한 모든 정보가 보관되는 공유 메모리 영역을 지정합니다. 이 예에서는 영역의 이름이 지정 client_sessions되고 크기는 1MB입니다.

이는 클라이언트 측에 쿠키를 유지할 필요가 없기 때문에 보다 정교한 세션 지속 방법입니다. 모든 정보는 공유 메모리 영역의 서버 측에 보관됩니다.

관련 정보