Cloudflare 프록시 환경에서 Nginx의 액세스 로그에 클라이언트의 실제 IP 주소를 남기는 방법
Nginx 서버에서 클라이언트의 실제 IP 주소를 얻으려면 X-Forwarded-For 헤더를 사용해야 합니다. Cloudflare는 이 헤더를 통해 클라이언트의 IP 주소를 전달하므로 Nginx에서 이 헤더를 읽어야 합니다.
1. Nginx 설정에서 --with-http_realip_module 모듈 확인
nginx -V
2. Nginx 설정 파일 편집
sudo vim /etc/nginx/nginx.conf
server {
listen 80;
server_name your_domain.com;
http {
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
}
access_log /var/log/nginx/access.log main;
# ... 기타 서버 설정 ...
}
위의 설정은 main 로그 형식에 X-Forwarded-For 헤더를 포함하고 있어 클라이언트의 원본 IP 주소를 로그 남깁니다.
3. http 블록 내에 다음과 같이 set_real_ip_from와 real_ip_header 지시문을 추가
set_real_ip_from와 real_ip_header 지시문은 Cloudflare 서버 IP 주소를 식별하고 X-Forwarded-For 헤더를 읽도록 구성합니다.
http {
...
# Cloudflare IP 대역 추가
set_real_ip_from 173.245.48.0/20;
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 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;
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;
# X-Forwarded-For 헤더 사용
real_ip_header X-Forwarded-For;
...
}
위 설정에서는 Cloudflare의 IP 대역을 set_real_ip_from 지시문으로 지정하고, real_ip_header 지시문으로 X-Forwarded-For 헤더를 읽도록 설정합니다.
- Cloudflare의 IP 대역은 변경될 수 있으므로 Cloudflare 대시보드에서 최신 IP 대역 정보를 확인하십시오.
- Cloudflare의 최신 IP 대역 정보
4. 설정 파일을 저장하고 닫습니다.
5. Nginx 구성을 다시 로드하여 변경 사항을 적용합니다.
sudo nginx -t
sudo systemctl reload nginx
이제 Nginx는 클라우드플레어 프록시를 통과하는 요청의 클라이언트 실제 IP 주소를 X-Forwarded-For 헤더에서 읽어와서 액세스 로그에 기록합니다. 이를 통해 클라이언트의 실제 IP 주소를 추적하고 로그로 남길 수 있습니다.
참고URL
- Cloudflare Docs : 원래 방문자 IP 복원
- NGINX Docs : Module ngx_http_realip_module
'리눅스' 카테고리의 다른 글
hostnamectl 명령어 (0) | 2023.09.15 |
---|---|
우분투에 HPE Smart Storage Administrator CLI(ssacli)를 설치하는 방법 (0) | 2023.09.14 |
PHP ImageMagick(imagick) 확장 모듈을 설치하는 방법 (0) | 2023.09.12 |
CentOS 7에서 ImageMagick을 설치하고 테스트하는 방법 (0) | 2023.09.12 |
VMware ESXi 환경에서 리눅스 가상 머신(VM)의 하드 디스크 용량을 증설하는 방법 - Ubuntu (0) | 2023.09.07 |