CloudFlare를 이용한 도메인 호스팅은 안정성과 효율성 덕분에 많은 사용자가 선택하고 있습니다. 특히, CloudFlare의 프록시 모드를 통해 HTTPS 통신을 지원하고, 사용자 IP를 복원하는 방법에 대해 알아보겠습니다.
CloudFlare 프록시 모드의 이해
프록시 모드의 기능
CloudFlare의 프록시 모드를 활성화하면, 웹 서버는 실제 사용자의 IP가 아닌 CloudFlare의 프록시 서버 IP를 수신합니다. 이는 보안과 성능을 높이지만, 특정 IP만 접근할 수 있도록 설정한 개발용 API에는 단점이 될 수 있습니다.
HTTPS 적용의 필요성
기존에 사용했던 GoDaddy의 인증서는 서브도메인에 적용되지 않아 Let’s Encrypt의 무료 인증서를 사용하게 되었으나, 이는 3개월마다 갱신해야 하는 번거로움이 있었습니다. 따라서 CloudFlare의 프록시 모드를 활용하여 HTTPS를 적용하고 사용자 IP를 복원하는 방향으로 설정을 변경하려는 것입니다.
사용자 IP 복원의 원리
X-Forwarded-For 헤더
프록시 서버를 통해 요청이 전달될 때, X-Forwarded-For라는 헤더가 생성되어 클라이언트의 원래 IP 주소를 포함하게 됩니다. 이 헤더는 여러 프록시를 거쳤을 때, 각 IP 주소를 차례로 기록합니다. 따라서, 이 헤더의 첫 번째 IP 주소를 사용자의 IP로 설정하면 됩니다.
Nginx의 리버스 프록시 설정
Nginx는 ngx_http_realip_module을 통해 이러한 헤더를 처리합니다. 이 모듈을 사용하면 요청의 실제 클라이언트 IP를 쉽게 복원할 수 있습니다.
Nginx 설정 방법
지시어 설정
- set_real_ip_from: 이 지시어는 특정 IP 주소에서 온 요청에 대해 작업을 수행하도록 지시합니다. CloudFlare의 프록시 서버 주소를 입력해야 합니다.
- real_ip_header: 이 지시어는 실제 클라이언트 IP를 찾기 위해 사용할 요청 헤더를 지정합니다. 일반적으로
X-Forwarded-For헤더를 사용합니다. - real_ip_recursive: 이 옵션을 활성화하면, 설정한 프록시 서버에서만 신뢰할 수 있는 IP를 사용합니다. 이를 통해 악의적인 IP 조작을 방지할 수 있습니다.
Nginx 설정 예시
다음은 Nginx에서 CloudFlare의 프록시 모드를 사용하여 HTTPS를 구현하고 IP를 복원하는 설정 예시입니다.
“`nginx
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;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
“`
위의 설정을 Nginx 설정 파일에 추가한 후, nginx -t 명령어로 설정 파일 문법을 테스트하고, reload 명령어로 Nginx를 재시작합니다. reload는 기존 프로세스를 유지한 채로 설정만 다시 읽어들이기 때문에 안정적입니다.
주의사항
Nginx 설정 변경 후에는 반드시 설정이 올바르게 작동하는지 확인해야 합니다. 잘못된 설정은 서비스 중단으로 이어질 수 있습니다.
자주 묻는 질문
CloudFlare의 프록시 모드를 활성화하면 어떤 장점이 있나요?
프록시 모드를 활성화하면 웹 사이트의 보안이 강화되고, DDoS 공격과 같은 위협으로부터 보호받을 수 있습니다.
X-Forwarded-For 헤더는 어떻게 작동하나요?
이 헤더는 클라이언트가 여러 프록시 서버를 통과할 때, 각 서버의 IP 주소를 기록합니다. 이를 통해 최종 클라이언트의 IP를 식별할 수 있습니다.
Nginx 설정을 변경한 후, 어떤 명령어로 확인하나요?
nginx -t 명령어를 사용해 설정 파일의 문법을 테스트한 후, 문제가 없으면 nginx -s reload를 통해 설정을 반영합니다.
IP 복원을 위한 설정이 제대로 되지 않으면 어떻게 하나요?
설정이 올바르게 적용되지 않으면, 웹 서버의 로그를 확인하여 문제의 원인을 찾고, 설정을 다시 점검해야 합니다.
CloudFlare의 IP 목록은 어디서 확인하나요?
CloudFlare의 공식 웹사이트에서 최신 IP 주소 목록을 확인할 수 있습니다.