Nginx

Nginx 와 X-Forwarded-for

uunnamed·2014년 4월 28일·조회 11,352

안녕하세요. NginX 를 Reverse Proxy 서버로 사용 시 뒷단의 access로그에서 Nginx서버의 IP가 아닌 실제 Client IP를 남기도

록 하는 설정을 알아보았습니다. 

먼저 해당 설정에는 http_realip_module 이 필요하므로 –with-http_realip_module  옵션 을 주고 Nginx를 재 컴파일 합니다.

이후 Nginx.conf 의 location 블록(Servver, http에도 가능) 에 아래와 같이 설정합니다. 

location ~ \.jsp$ {
 proxy_pass https://cluster; ==> upstream 에서 설정해준 지시어
 set_real_ip_from 11.111.11.11 (Nginx 서버 IP)
 real_ip_header   X-Forwarded-For; 
}

set_real_ip_from 에 NginX IP를 입력하여 주면 뒷단의 WAS access.log 에  NginX  서버 IP 가 아닌 Clinet IP가 나오게 됩니다. 물론 WAS에서의 access.log 설정은 따로 해주어야 합니다. 

NginX의 load balancing 확인 시에 위의 설정으로 로그에서도 확인이 될 것으로 보입니다.

이상입니다. 

댓글 3

로그인 후 댓글을 남길 수 있습니다.

  • 열린기술자열린기술자· 2014년 5월 1일
    set_real_ip_from 11.111.11.11 의 11.111.11.11 을 꼭 적어주지 않고 동적으로 알아서 Nginx IP 을 인식해서 설정하도록 할 수는 없을까요?
  • 빅토르최빅토르최· 2014년 5월 7일
    오타발견.. Servver
  • 몽상가몽상가· 2018년 8월 28일
    set_real_ip_from 의 사용법을 보면 IP address 뿐 아니라 CIDR 도 이용할 수 있다고 하니... Nginx가 여러 대의 서버에서 서비스 중이라면 CIDR 을 활용해보는 것도 좋을 것 같습니다. 어떤 사이트에서는 set_real_ip_from 0.0.0.0/0 값을 사용하라고 되어 있는데 이건 바람직해 보이지는 않네요. Directives Syntax: set_real_ip_from address | CIDR | unix:; Default: — Context: http, server, location Defines trusted addresses that are known to send correct replacement addresses. If the special value unix: is specified, all UNIX-domain sockets will be trusted. Trusted addresses may also be specified using a hostname (1.13.1).