이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 15060|회답: 0

[웹] 프론트엔드 nginx와 백엔드 nginx 서버는 원래 클라이언트의 IP 주소를 기록합니다

[링크 복사]
게시됨 2014. 11. 3. 오전 9:53:23 | | |

이 모듈은 클라이언트 요청 헤더의 클라이언트 IP 주소 값을 변경할 수 있게 해줍니다(예: X-Real-IP 또는 X-Forwarded-For).

    이 기능은 Nginx가 일부 7계층 부하 분산 프록시 뒤에서 작동하는 경우 매우 유용합니다. 클라이언트 요청의 로컬 IP(즉, 클라이언트의 요청 주소)가 레이어 7 프록시를 통과할 때 클라이언트 IP 주소 헤더에 추가되어 백엔드 Nginx가 클라이언트의 IP 주소 값을 얻을 수 있기 때문입니다. 모듈은 기본적으로 설치되어 있지 않으니, 모듈을 사용하려면 설치 컴파일 시 -with-http_realip_module 옵션을 추가해야 합니다.

    이 모듈을 사용하는 이유는 백그라운드 서버가 원래 클라이언트의 IP 주소를 기록할 수 있게 하기 때문입니다.

구성 예시
set_real_ip_from 192.168.1.0/24;
set_real_ip_from 192.168.2.1;
real_ip_header X-Real-IP;


손가락    순서

   이 모듈은 단 두 가지 명령어만 제공합니다.

명령어 이름: set_real_ip_from

함수: 이 명령어를 통해 신뢰할 수 있는 주소를 지정하는 것은 정확한 IP 주소로 대체됩니다. 신뢰할 수 있는 Unix 소켓도 버전 0.8.22부터 사용할 수 있습니다. 여기서 IP 집합은 프론트엔드를 의미합니다은긴스바니시또는오징어IP주소.

문법: set_real_ip_from [주소| CIDR|" 유닉스:"]

기본 값: 없음

사용 환경: http, 서버, 위치

명령어 이름: real_ip_header

기능: 이 명령어는 IP 주소를 대체할 헤더를 설정하는 데 사용됩니다. X-Forwarded-For를 사용할 경우, 모듈은 프론트엔드 프록시의 IP 주소를 X-Forwarded-For 헤더의 마지막 IP 주소로 대체합니다.

문법: real_ip_header [X-Real-IP| X-전달됨]

기본 값: real_ip_header x-real-IP

사용 환경: http, 서버, 위치

사용 사례   

    다음 예시에서 우리 환경은 다음과 같습니다: 두 개의 Nginx 서버가 있는데, 하나는 프론트엔드이고 다른 하나는 백엔드입니다. 프론트엔드 Nginx는 프록시로 사용되고 백엔드 Nginx는 페이지 접근 권한을 제공하며, 다음 IP 주소를 가진 클라이언트도 있습니다:

  

    Frontend Nginx: 192.168.7.10

    Backend Nginx: 192.168.1.15

    클라이언트 호스트: 218.239.201.36

    프론트엔드의 Nginx 구성은 다음과 같습니다:

서버 {
  듣기 80;
  server_name www.xx.com;

위치 / {
    루트 html;
    지수 index.html index.htm;
차르셋 UTF-8;
  }

위치 /865 {
    proxy_pass http://192.168.3.139:80/;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header 호스트 $host;
    proxy_redirect 떠나고;
  }

……
}

백엔드의 Nginx 구성은 다음과 같습니다:

서버 {
  듣기 80;
  server_name localhost;

  위치 / {
    루트 /var/www/html;
    지수 index.html index.htm;
  }

시험 접근법

    http://www.xx.com/865 에 접근하면 문제없이 정상적으로 접근할 수 있습니다. 접근 기록은 다음과 같습니다:

    프론트엔드 Nginx의 로그:

218.239.201.36 - - [2011년 8월 30일:16:09:56 +0800] "GET /865/ HTTP/1.1" 200 151 "-" "Mozilla/5.0 (Windows; U; 윈도우 NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

백엔드 Nginx의 로그:

192.168.7.10 - - [2011년 8월 30일:16:09:56 +0800] "GET // HTTP/1.0" 200 151 "-" "Mozilla/5.0 (Windows; U; 윈도우 NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

백엔드 Nginx 로그는 원래 클라이언트의 IP 주소를 기록하지 않고, 프론트엔드 Nginx의 IP 주소를 기록합니다.

    만약 백그라운드 Nginx 서버의 구성을 다음과 같이 수정한다면:

서버 {
  듣기 80;
  server_name localhost;
  set_real_ip_from 192.168.3.0/24;
set_real_ip_from 100.100.0/16;
  real_ip_header X-Real-IP;

  위치 / {
    루트 html;
    지수 index.html index.htm;
  }

    ……
}

그 다음 다시 접근 테스트를 합니다:

    프론트엔드 Nginx의 로그:

218.239.201.36 - - [2011년 8월 30일:16:10:28 +0800 "GET /865/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows; U; 윈도우 NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

     백엔드 Nginx의 로그:

218.239.201.36 - - [2011년 8월 30일:16:10:28 +0800] "GET // HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows; U; 윈도우 NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 GTB7.1"

이번에는 백그라운드에서 클라이언트의 IP 주소를 기록하는 것을 알 수 있습니다.







이전의:nginx 프록시 모드: 클라이언트의 실제 IP 주소를 얻습니다
다음:디스쿠즈! X3.1 모든 버전의 X3는 크레딧 없이 첨부 다운로드 권한을 우회함 무제한 다운로드 취약점
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com