nginx $remote_addr 상세 설명

nginx 의 자체 변수 $remoteaddr 대표 클 라 이언 트 의 IP
remote_addr 는 클 라 이언 트 의 IP 를 대표 합 니 다. 그러나 그 값 은 클 라 이언 트 가 제공 하 는 것 이 아니 라 서버 가 클 라 이언 트 의 ip 에 따라 지정 한 것 입 니 다. 브 라 우 저가 특정한 사 이 트 를 방문 할 때 중간 에 프 록 시가 없다 고 가정 하면 사이트 의 웹 서버 (Nginx, Apache 등) 는 reoteaddr 는 기계 IP 로 설정 합 니 다. 만약 당신 이 어떤 프 록 시 를 사용 했다 면, 브 라 우 저 는 먼저 이 프 록 시 를 방문 한 다음 에 이 프 록 시 에서 사이트 로 전송 합 니 다. 그러면 웹 서버 는 reoteaddr 는 이 프 록 시 기기 의 IP 로 설정 합 니 다.
하지만 실제 장면 에서 우 리 는 대리 가 있어 도 $remoteaddr 는 로그 에 기록 할 수 있 도록 실제 사용자 IP 로 설정 되 어 있 습 니 다. 물론 nginx 는 이 기능 이 있 지만 컴 파일 이 필요 할 때 - with - http 을 추가 합 니 다.realip_module 이 모듈 은 기본적으로 설치 되 어 있 지 않 습 니 다.
\ # 이 모듈 은 요청 헤더 에서 클 라 이언 트 의 IP 주소 값 을 변경 할 수 있 습 니 다. 기본 값 은 닫 습 니 다.
무시 xforwarded_for
사실, Nginx 의 realip 모듈 을 사용 하면 remote 를 보장 합 니 다.addr 에서 설정 한 것 은 클 라 이언 트 의 실제 IP 입 니 다. 이 설정 을 보십시오.
위의 설정 은 192.168.100.0 이라는 네트워크 에서 온 요청 을 모두 X - Forward - for 의 머리 정 보 를 reote 로 사용 하 는 것 입 니 다.addr
set_real_ip_from  192.168.100.0/24;
real_ip_header     X-Forwarded-For;

바로 xforwarded_for remote 로 설정addr, nginx 의 xforwarded_for 에서 얻 은 것 이 그 중의 첫 번 째 IP 입 니 다.
이 설정 을 사용 하면 당신 의 remote 를 보장 할 수 있 습 니 다.addr 에서 설정 한 것 은 클 라 이언 트 의 실제 IP 이 고 xforwarded_for 는 무시 할 수 있 습 니 다.
알림:
nginx - V 에서 볼 수 있 는 컴 파일 매개 변수 와 컴 파일 모듈 (정적 및 동적)
이 모듈 없 음 ngixn 설정 파일 에 set 가 인식 되 지 않 습 니 다.real_ip_from   192.168.100.0/24; 이 지령 의
가장 간단 한 테스트 는:
 --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module
시 뮬 레이 션 은 당연히 간단 하 죠.
클 라 이언 트:
curl -I bbs.test.com  -H 'X-Forwarded-For: 2.2.2.2' 
대리 가 본 remoteaddr 는 '2.2.2.2' 일 겁 니 다.
ngixn server 가 본 것 도 2.2.2.2. 
client nginx - proxy 가 있 습 니 다. ngixn-server   curl - I bbs. test. com 이렇게 하면 테스트 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기