찾다

 >  Q&A  >  본문

로드 밸런싱 - NGINX는 TCP를 백엔드 서버로 전달합니다. 백엔드 서버는 사용자의 실제 IP 주소를 어떻게 얻나요? NGINX 서버와 백엔드 서버가 동일한 네트워크 세그먼트에 있지 않습니다.

최근에는 전송 서버를 통해 실제 백엔드 서버로 TCP 요청을 전달해야 한다는 요구 사항이 있는데, 현재 직면한 문제는 백엔드 서버가 사용자의 실제 IP를 얻을 수 없다는 것입니다.

HTTP가 아닌 TCP 연결이라는 점에 유의하세요. NGINX의 스트림 모듈에 있는 기능입니다. 온라인에서 많은 정보를 확인했지만, 공식 NGINX 문서에서는 해결 가능하다고 나와 있습니다. 이미 구현한 친구가 있기를 바랍니다. 또한 LVS를 로드로 사용하는 경우 머신이 클라이언트의 실제 IP 주소를 얻을 수 있습니까? 동일한 네트워크 세그먼트? 가능하다면 관련 기사를 링크해주세요.

참조 문서:
https://nginx.org/en/docs/str...
https://www.nginx.com/blog/tc...

高洛峰高洛峰2752일 전1882

모든 응답(1)나는 대답할 것이다

  • 黄舟

    黄舟2017-06-16 09:21:41

    LVS는 nat 또는 fullnat 모드에서는 기본적으로 실제 IP를 얻을 수 없습니다.

    Alibaba의 fullnat는 TCP 옵션을 통해 실제 IP를 백엔드로 전달할 수 있습니다.

    nginx의 스트림 모듈은 프록시 프로토콜 https://www.haproxy.org/downl...을 통해 실제 IP를 전달할 수 있습니다.

    두 가지 모두 공통점이 있습니다:

    이 IP를 얻으려면 백엔드에서 코드를 수정해야 합니다.

    회신하다
    0
  • 취소회신하다