NSX 6.1.5 이상에서 x-forwarded-for를 사용하도록 설정하는 경우 HTTP 연결 모드가 수동 닫기(option httpclose)에서 기본 HTTP 서버 닫기(option http-server-close) 모드로 변경됩니다. 이 경우 서버에서 응답을 받은 후에 서버 쪽 연결은 닫히지만 클라이언트 쪽 연결은 열린 상태를 유지합니다. NSX 6.1.5 이전 버전에서는 NSX 로드 밸런서가 연결을 미리 닫지 않았지만 양방향에서 "Connection:close" 헤더를 삽입하여 클라이언트 또는 서버에 연결을 닫도록 지시했습니다. NSX 6.1.5 이상으로 업그레이드한 후에 NSX 로드 밸런서에서 HTTP/HTTPS 트랜잭션이 실패하면 스크립트 option httpclose를 사용하여 애플리케이션 규칙을 추가하고 더 이상 작동하지 않는 가상 서버에 연결합니다.

HTTP 서버 닫기(기본값) - 서버 쪽 연결은 응답 끝이 수신되면 닫히고 클라이언트 쪽 연결은 열린 상태를 유지합니다. HTTP 서버 닫기는 클라이언트 측에 지연 시간(느린 네트워크)을, 서버 측에 가장 빠른 세션 재사용을 제공하여 서버 리소스를 절약합니다. 또한 연결을 유지할 수 없는 서버가 클라이언트 측면에서 연결 유지하도록 합니다. 이 모드는 가장 일반적인 사용 사례에 적합합니다. 특히 느린 클라이언트 쪽 네트워크 및 빠른 서버 쪽 네트워크에 적합합니다.

HTTP 연결 유지 - 모든 요청 및 응답이 처리되고 연결은 열린 상태를 유지하지만 응답과 새 요청 간은 유휴 상태가 됩니다. 장점은 트랜잭션 간 지연 시간이 줄어들고 서버 측에 필요한 처리 능력이 줄어듭니다. 활성 세션 수를 수용하도록 메모리 요구 사항이 늘어나며, 각 요청 후에 더 이상 연결이 닫히지 않으므로 메모리 요구 사항이 더 높아집니다. 클라이언트 쪽 유휴 시간 초과는 애플리케이션 규칙 “timeout http-keep-alive [time]”을 통해 구성할 수 있습니다. 기본적으로 유휴 시간 초과는 1초입니다. 이 모드는 애플리케이션이 NTLM 인증을 요구할 때 필수입니다.

HTTP 터널 - 첫 번째 요청 및 응답만 처리되고 클라이언트와 서버 간에 터널이 설정되므로 HTTP 프로토콜의 추가 분석 없이도 소통할 수 있습니다. 설정된 연결은 클라이언트 및 서버 양 측에서 유지됩니다. 이 모드를 사용하도록 설정하려면 수동-닫기 모드, 서버-닫기 모드, 강제-닫기 모드 중 어떤 옵션도 설정하지 않아야 합니다.

HTTP 터널 모드는 다음 기능에 영향을 미치며 세션의 첫 번째 요청 및 응답에만 적용됩니다.

  • 로그가 생성되지 않음

  • HTTP 헤더 구문 분석

  • HTTP 헤더 조작

  • 쿠키 처리

  • 컨텐츠 전환

  • X-Forwarded-For 헤더 삽입

HTTP 수동 닫기 - 터널 모드와 동일하지만 클라이언트 및 서버 방향 둘 다로 "Connection: close" 헤더가 추가됩니다. 첫 번째 요청 및 응답이 교환된 후에 양쪽 끝이 닫힙니다. "option httpclose"가 설정되면 NSX 로드 밸런서는 HTTP 터널 모드에서 작동하고 각 방향으로 "Connection: close" 헤더가 있는지 확인합니다. 이 헤더가 없으면 "Connection: close" 헤더가 추가됩니다. 그러면 각 끝에서 각 전송 후에 TCP 연결이 능동적으로 닫히고 HTTP 닫기 모드로 전환됩니다. "close" 이외의 모든 연결 헤더는 제거됩니다. NSX 로드 밸런서에 의해 삽입된 후 클라이언트의 다음 요청에 의해 다시 운반되는 쿠키 같은 두 번째 및 후속 요청을 제대로 처리할 수 없는 애플리케이션은 터널 모드 또는 수동 닫기 모드를 사용할 수 있습니다.

일부 HTTP 서버는 "option httpclose"로 설정된 "Connection: close"를 수신할 때 반드시 연결을 닫지는 않을 수 있습니다. 또한 클라이언트가 연결을 닫지 않으면 시간 초과가 만료될 때까지 연결은 열린 상태를 유지합니다. 이로 인해 서버에서 많은 수의 동시 연결이 발생하고 로그에는 높은 전역 세션 시간이 표시됩니다. 이러한 이유로 이전 HTTP 1.0 브라우저와 호환되지 않습니다. 이 경우 "option forceclose"를 사용합니다. 그러면 서버가 응답할 경우 요청 연결이 능동적으로 닫힙니다. Option "forceclose"는 클라이언트의 승인을 대기할 필요가 없으므로 서버 연결이 더 빠르게 해제됩니다.

HTTP 강제 닫기 - 응답이 끝난 후에 클라이언트 및 서버 연결 둘다 NSX 로드 밸런서에 의해 능동적으로 닫힙니다. 일부 HTTP 서버는 "option httpclose"로 설정된 "Connection: close"를 수신할 때 반드시 연결을 닫지는 않을 수 있습니다. 또한 클라이언트가 연결을 닫지 않으면 시간 초과가 만료될 때까지 연결은 열린 상태를 유지합니다. 이로 인해 서버에서 많은 수의 동시 연결이 발생하고 로그에는 높은 전역 세션 시간이 표시됩니다. 이 경우 "option forceclose"는 서버가 응답을 끝내는 즉시 송신 서버 채널을 능동적으로 닫고 "option httpclose"를 사용할 때보다 더 빠르게 일부 리소스를 해제합니다.

NSX

기본 연결 모드

X-Forwarded-For가 사용하도록 설정된 경우의 연결 모드

연결 모드를 전환하는 데 사용할 수 있는 애플리케이션 규칙

6.0.x, 6.1.0, 6.1.1

HTTP 서버 닫기

HAProxy 문서에 지정된 대로 각 요청에 강제로 xff가 추가되도록 “option httpclose”가 가상 서버에 자동으로 추가됩니다. 클라이언트에서 백엔드 서버에 각 요청이 발송될 때 각 요청에 xff 헤더가 추가됩니다.

아니요

6.1.2 - 6.1.4

HTTP 서버 닫기

HTTP 수동 닫기(가상 서버에 “option httpclose”가 자동으로 추가됨)

“no option http-server-close”

“option httpclose”

“no option httpclose”

6.1.5 - 6.1.x 6.2.0 - 6.2.2

HTTP 서버 닫기

클라이언트에서 백엔드 서버에 각 요청이 발송될 때 각 요청에 HTTP Server Close xff 헤더가 추가됩니다.

“no option http-server-close”

“option httpclose”

“no option httpclose”

6.2.3-6.2.5

HTTP 서버 닫기

클라이언트에서 백엔드 서버에 각 요청이 발송될 때 각 요청에 HTTP Server Close xff 헤더가 추가됩니다.

“no option http-server-close”

“option httpclose”

“no option httpclose”

6.2.3-6.2.5

HTTP 서버 닫기

클라이언트에서 백엔드 서버에 각 요청이 발송될 때 각 요청에 HTTP Server Close xff 헤더가 추가됩니다.

“no option http-server-close”

“no option httpclose”

“option httpclose”

6.2.5 - 6.2.x

HTTP 서버 닫기

클라이언트에서 백엔드 서버에 각 요청이 발송될 때 각 요청에 HTTP Server Close xff 헤더가 추가됩니다.

“no option http-server-close”

“option http-keep-alive”

“option http-tunnel”

“option httpclose”

“option forceclose”