서버

[Cloudflare, Docker] Nginx에서 Real IP 찾는법

for2gles 2023. 8. 15. 12:37
반응형

나는 Cloudflare dns proxy를 이용하고있고, Nginx를 Docker에 운영하고 있다.
그러다보니 nginx log를 확인해보면 엉뚱한 ip가 보여진다.

 

# Cloudflare
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2a06:98c0::/29;
set_real_ip_from 2c0f:f248::/32;

# Docker
set_real_ip_from 10.0.0.0/16;

# real_ip_header CF-Connecting-IP;
real_ip_header X-Forwarded-For;

해당 내용을 담은 conf 파일을 만들고 nginx.conf에서 include 해주면 된다.
http 섹션에 넣어놓으면 해당 http 섹션 안에 모든 server 섹션들에 적용된다.

특정 server섹션에만 적용하고싶으면, 해당 섹션에서 include를 해주면 된다.

 

Cloudflare ip목록은 잦지는 않지만 변경될 수 있기 때문에

https://www.cloudflare.com/ko-kr/ips/

해당 url을 꼭 확인해야하고, Docker 같은경우에는 나는 10.0.0.0/16 네트워크를 사용하기 때문에 다른 네트워크 대역을 사용하면 본인에 맞게 수정해주면 된다.

 

아래 사진은 설정 전과 후의 nginx log이다.


참고 문서

https://developers.cloudflare.com/support/other-languages/%ED%95%9C%EA%B5%AD%EC%96%B4/%EC%9B%90%EB%9E%98-%EB%B0%A9%EB%AC%B8%EC%9E%90-ip-%EB%B3%B5%EC%9B%90/#nginx

반응형