nginx 사용 httpx_forwarded_for 원 격 액세스 ip 해결 방법 을 가 져 올 수 없습니다.

회사 에 응용 프로그램 이 있 습 니 다. 백 엔 드 웹 은 nginx 를 사용 합 니 다. nginx 의 모든 요청 은 전단 의 프 록 시 를 통 해 전 송 됩 니 다. 로그 형식 에서 원 격 ip 를 가 져 오 는 변 수 는 $http 입 니 다.x_forwarded_for, 원래 잘 사 용 했 는데 어느 날 로그 분석 스 크 립 트 에 요청 한 ip 주소 가 많이 비어 있 습 니 다. 대개 형식 은 다음 과 같 습 니 다. [20 / May / 2011: 02: 23: 44 - 0700] "GET / avi. ico HTTP / 1.1" 404 56 "-" Mozilla / 5.0 (Windows NT 6.1; rv: 2.0) Geo / 2010 01001 Firefox / 4.0 "-cust=000000004A5BB94DD441F61302282103 - - 0.002- - - [20/May/2011:02:23:45 -0700] "GET /favi.ico HTTP/1.1" 404 56 "-" "Mozilla/5.0 (Windows NT 6.1; rv:2.0) Gec/20100101 Firefox/4.0" - __cust=000000004A5BB94DD441F61302282103 - - 0.001- - - [20/May/2011:02:23:45 -0700] "GET /favi.ico HTTP/1.1" 404 56 "-" "Mozilla/5.0 (Windows NT 6.1; rv:2.0) Gec/20100101 Firefox/4.0" - __cust=000000004A5BB94DD441F61302282103 - - 0.001  싫 습 니 다. 왜 이런 ip 방문 이 비어 있 는 현상 이 발생 했 습 니까? 나중에 분석 문 제 는 $http 에 있 을 것 입 니 다.x_forwarded_for 이 변수 에 서 는 이 변수 가 ip 를 가 져 오 는 경로 가 프 록 시 서버 이기 때문에 프 록 시 서버 를 거치 지 않 고 서버 를 직접 연결 하 는 host 가 이 서버 에 접근 할 것 을 요청 하면 $httpx_forwarded_for 는 실제 ip 주 소 를 가 져 올 수 없 기 때문에 로그 ip 주 소 는 "-" 로 바 뀌 었 습 니 다. 나중에 우 리 는 $remote 로addr 는 서버 에 접근 하 는 이 바 인 딩 서버 ip 의 ip 을 얻 을 수 있 습 니 다.하지만 프 록 시 를 통 해 방문 한 ip 은 얻 을 수 없습니다.어 떡 하지?방법 이 왔 습 니 다. if 판단 을 쓰 십시오. 형식 은 다음 과 같 습 니 다.
 set $remote_addrx $http_x_forwarded_for;
         if ( $remote_addrx ~ "" ) {
             set $remote_addrx $remote_addr;
        }

=====================================================================
그리고 logformat 에서 새로 정 의 된 $remoteaddrx 변 수 는 $http 를 대체 합 니 다.x_forwarded_for 면 돼 요 ㅋ ㅋ 이 글 이 여러분 에 게 유용 하 길 바 랍 니 다 (* ^ ^ *)
나중에 나 는 어떤 상황 에서 위의 방법 도 ip 를 얻 지 못 한 다 는 것 을 발견 했다. 검색 에서 다음 과 같은 몇 가지 상황 에 대한 설명 을 보 았 다.
텍스트 원본
http://hi.baidu.com/48238398/blog/item/2271c2cbee7fe1ee53664f07.html1. 프 록 시 서버 를 사용 하지 않 은 경우:      REMOTE_ADDR = 당신 의 IP      HTTP_VIA = 수치 가 없 거나 표시 되 지 않 음      HTTP_X_FORWARDED_FOR = 수치 가 없 거나 보이 지 않 거나 투명 프 록 시 를 사용 하 는 경우: Transparent Proxies      REMOTE_ADDR = 마지막 프 록 시 IP      HTTP_VIA = 프 록 시 IP      HTTP_X_FORWARDED_FOR = 귀하 의 실제 IP 는 여러 프 록 시 서버 를 거 쳤 을 때 이 값 은 다음 과 같 습 니 다. 203.98.182.163, 203.98.182.163, 203.129.72.215.   이러한 프 록 시 서버 는 귀하 의 정 보 를 방문 대상 에 게 전달 하여 정 체 를 숨 기 는 목적 을 달성 할 수 없습니다.3. 일반 익명 프 록 시 를 사용 하 는 경우: Anonymous Proxies      REMOTE_ADDR = 마지막 프 록 시 IP      HTTP_VIA = 프 록 시 IP      HTTP_X_FORWARDED_FOR = 프 록 시 IP, 여러 프 록 시 서버 를 거 쳤 을 때 이 값 은 다음 과 유사 합 니 다. 203.98.182.163, 203.98.182.163, 203.129.72.215.   실제 IP 를 숨 겼 지만 방문 대상 에 게 프 록 시 서버 로 접근 했다 고 밝 혔 습 니 다.4. 기만 적 인 프 록 시 서버 를 사용 하 는 경우: Distorting Proxies      REMOTE_ADDR = 프 록 시 IP      HTTP_VIA = 프 록 시 IP      HTTP_X_FORWARDED_FOR = 랜 덤 IP, 여러 프 록 시 서버 를 거 쳤 을 때 이 값 은 203.98.182.163, 203.98.182.163, 203.129.72.215 와 유사 합 니 다.   방문 대상 에 게 프 록 시 서버 를 사용 했다 고 알려 주 었 으 나 실제 IP 대신 허위 랜 덤 IP 를 조작 하여 속 였 습 니 다.5. 익명 의 프 록 시 서버 를 사용 하 는 경우: High Anonymy Proxies (Elite proxies)      REMOTE_ADDR = 프 록 시 IP      HTTP_VIA = 수치 가 없 거나 표시 되 지 않 음      HTTP_X_FORWARDED_FOR = 수치 가 없 거나 표시 되 지 않 습 니 다. 여러 프 록 시 서버 를 거 쳤 을 때 이 값 은 203.98.182.163, 203.98.182.163, 203.129.72.215 와 유사 합 니 다.   프 록 시 서버 의 정보 로 모든 정 보 를 대 체 했 습 니 다. 마치 프 록 시 서버 를 완전히 사용 하여 대상 을 직접 방문 하 는 것 과 같 습 니 다.
--------------------------------------------------------------------
위 에 있 는 상황 에 부 딪 히 면 순 순 히 서버 에 올 라 가서 가방 을 잡 으 세 요 ~ ~

좋은 웹페이지 즐겨찾기