eyesofkhepri

3. ngx_http_realip_module 본문

nginx

3. ngx_http_realip_module

eyesofkhepri 2017. 12. 12. 12:11

3. ngx_http_realip_module

일반적으로 웹서버/WAS위에 Proxy나 L4를 두고 사용한다. 이런 경우 nginx의 access로그에서는 nginx를 요청한 proxy나 L4의 IP주소를 남기게 된다. 이것을 해결하기 위한 방법으로는 L4나 Proxy의 주소가 아닌 L4나 Proxy주소를 호출한 Client의 주소를 log로 남겨야 하는데 ngx_http_realip_module은 간단한 설정으로 Client IP를 로그로 남길 수 잇도록 도와준다.

주소

http://nginx.org/en/docs/http/ngx_http_realip_module.html

주의점

이 모듈은 기본적으로 빌드 되지 않으며 컴파일시에 --with-http_realip_module 옵션을 넣어줘야 한다.

사용법

set_real_ip_from 192.168.1.0/24;
set_real_ip_from 192.168.2.1;
set_real_ip_from 2001 : 0db8 :: / 32;
real_ip_header X-Forwarded-For;
real_ip_recursive on;

AWS 사용

AWS의 L4나 WAF, CloudFront 등등을 사용할 경우 해당 ip와 서브넷을 모두 set_real_ip_from에 등록해줘야 한다. WAF같은 경우 주소를 직접 알수 있고 CloudFront같은 경우 AWS 공식 설명서에 해당 IP대역을 모두 공유하니 그 것을 통해서 모두 설정 할 수 있다. 즉 아래와 같은 구성을 해야 한다.

set_real_ip_from 0.0.0.0/16;

# cloudfront
set_real_ip_from 13.32.0.0/15;
set_real_ip_from 13.54.63.128/26;
set_real_ip_from 13.59.250.0/26;
set_real_ip_from 13.113.203.0/24;
set_real_ip_from 13.124.199.0/24;
set_real_ip_from 13.228.69.0/24;
set_real_ip_from 18.216.170.128/25;
set_real_ip_from 34.195.252.0/24;
set_real_ip_from 34.216.51.0/25;
set_real_ip_from 34.226.14.0/24;
set_real_ip_from 34.232.163.208/29;
set_real_ip_from 35.158.136.0/24;
set_real_ip_from 35.162.63.192/26;
set_real_ip_from 35.167.191.128/26;
set_real_ip_from 52.15.127.128/26;
set_real_ip_from 52.46.0.0/18;
set_real_ip_from 52.47.139.0/24;
set_real_ip_from 52.52.191.128/26;
set_real_ip_from 52.56.127.0/25;
set_real_ip_from 52.57.254.0/24;
set_real_ip_from 52.66.194.128/26;
set_real_ip_from 52.78.247.128/26;
set_real_ip_from 52.84.0.0/15;
set_real_ip_from 52.199.127.192/26;
set_real_ip_from 52.212.248.0/26;
set_real_ip_from 52.220.191.0/26;
set_real_ip_from 52.222.128.0/17;
set_real_ip_from 54.182.0.0/16;
set_real_ip_from 54.192.0.0/16;
set_real_ip_from 54.230.0.0/16;
set_real_ip_from 54.233.255.128/26;
set_real_ip_from 54.239.128.0/18;
set_real_ip_from 54.239.192.0/19;
set_real_ip_from 54.240.128.0/18;
set_real_ip_from 204.246.164.0/22;
set_real_ip_from 204.246.168.0/22;
set_real_ip_from 204.246.174.0/23;
set_real_ip_from 204.246.176.0/20;
set_real_ip_from 205.251.192.0/19;
set_real_ip_from 205.251.249.0/24;
set_real_ip_from 205.251.250.0/23;
set_real_ip_from 205.251.252.0/23;
set_real_ip_from 205.251.254.0/24;
set_real_ip_from 216.137.32.0/19;

# WAF
set_real_ip_from xxx.xxx.xx.x

real_ip_header X-Forwarded-For;
real_ip_recursive on;

설명

real_ip_recursive를 on으로 하지 않으면 set_real_ip_from에 마지막으로 요청된 요청 ip가 설정됩니다. 즉 L4 > WAF > nginX호출 순서라면 WAF에 요청한 L4주소가 설정 됩니다. on일 경우 계속 재귀적으로 호출하면서 set_real_ip_from에 마지막으로 등록된 요청된 IP를 설정합니다.

'nginx' 카테고리의 다른 글

4. NginX 설치  (0) 2018.03.23
2. X-Content-Type-Options  (0) 2017.12.12
1. X-Frame-Options과 ClickJacking  (0) 2017.12.12
Comments