워드프레스 클라우드플레어 설치 — 보안과 속도를 한 번에 잡는 실전 세팅

-

워드프레스 클라우드플레어 설치 — 보안과 속도를 한 번에 잡는 실전 세팅 : 워드프레스에 클라우드플레어를 붙이면 해외 봇 트래픽이 원본 서버에 닿기 전에 걸러지고, 글로벌 CDN으로 정적 파일이 빨라진다. 네임서버 변경부터 Bot Fight Mode, 국가별 챌린지, Rate Limiting, REST API 저장 오류 해결, 애드센스 여백 버그까지 실제 설정 순서대로 정리했다. 무료 플랜의 규칙 5개 한도 안에서 배분하는 방법과, 흔히 잘못 알려진 설정도 함께 짚는다.

워드프레스 보안 강화 NGINX 설정 방법 8가지

리눅스 서버 보안을 위한 포트 사용 최적화

워드프레스 보안 강화를 위한 사용자명 변경 방법


Table of contents 목차 보이기

클라우드플레어 설치결론 — 순서를 틀리면 사이트가 죽는다

클라우드플레어는 무료로도 강력합니다. 그런데 설정 순서를 틀리면 HTTPS 무한 리다이렉트에 걸리거나, 글 저장이 안 되거나, 보안 플러그인이 모든 방문자를 같은 IP로 인식하게 됩니다.

제대로 된 순서는 이렇습니다.

순서작업놓치면 생기는 일
1SSL/TLS 모드를 Full (strict) 로 먼저 변경리다이렉트 루프, 525·526 오류
2네임서버 변경 및 프록시(주황 구름) 확인연동 자체가 안 됨
3보안 규칙 배포 (Bot Fight Mode, 국가 챌린지, Rate Limiting)서버 부하 지속
4실제 방문자 IP 복원보안 플러그인 오작동, 차단 오판
5캐시·속도 최적화효과 절반
6워드프레스 어드민 예외 처리글 저장 실패

1번을 건너뛰는 경우가 가장 많고, 피해도 가장 큽니다.


1. 클라우드플레어를 쓰는 이유 세 가지

① 원본 서버 IP 은닉과 자원 보호

방문자 요청이 내 호스팅 서버에 닿기 전에 클라우드플레어의 에지 네트워크를 먼저 거칩니다. DDoS, 취약점 스캔, 무차별 크롤링이 이 단계에서 걸러집니다. 원본 IP가 노출되지 않는다는 것 자체가 보안입니다. 공격자가 서버 주소를 모르면 표적 공격을 시작할 지점을 찾기 어렵습니다.

② 무료 SSL과 HTTPS 상시 유지

Let’s Encrypt 인증서 갱신이 실패해서 사이트가 경고 페이지로 바뀌는 일이 워드프레스에서 흔합니다. 클라우드플레어를 붙이면 에지에서 인증서를 관리하므로 이 문제에서 벗어납니다.

③ 글로벌 CDN

이미지·CSS·JS 같은 정적 파일을 전 세계 캐시 서버에서 제공합니다. 국내 서버를 쓰면서 해외 방문자가 있는 사이트일수록 체감 차이가 큽니다.

광고 수익과의 관계는 조심해서 봐야 합니다. 무효 트래픽이나 비정상 봇 요청이 늘면 애드센스의 노출 범위(Coverage) 지표가 왜곡될 수 있습니다. 다만 “봇을 막으면 노출 범위가 특정 수치까지 떨어진다”는 식의 인과관계는 사이트마다 다르므로, 클라우드플레어를 트래픽 품질을 정리하는 수단으로 이해하는 편이 정확합니다.


2. 클라우드플레어 설치 전에 반드시 — SSL/TLS 모드

여기가 이 글에서 가장 중요한 부분입니다. 대부분의 가이드가 이 단계를 빼먹습니다.

클라우드플레어 대시보드에서 SSL/TLS → Overview 로 이동합니다.

모드동작판정
OffHTTPS 없음사용 불가
Flexible방문자↔CF는 HTTPS, CF↔서버는 HTTP위험. 리다이렉트 루프 원인
Full양쪽 HTTPS, 서버 인증서 검증 안 함최소 허용
Full (strict)양쪽 HTTPS, 서버 인증서까지 검증권장

Flexible은 반드시 피하세요. 워드프레스가 “이 요청은 HTTP다”라고 인식해서 HTTPS로 리다이렉트를 걸고, 클라우드플레어는 다시 HTTPS로 넘기고, 이게 무한 반복되면서 ERR_TOO_MANY_REDIRECTS가 납니다. 이미 Flexible로 운영 중이었다면 호스팅에 인증서가 있는지 확인한 뒤 Full (strict)로 올리면 대부분 해결됩니다.

같은 화면에서 두 가지를 함께 켭니다.

  • Edge Certificates → Always Use HTTPS 켜기
  • Automatic HTTPS Rewrites 켜기 (혼합 콘텐츠 완화)
클라우드프레어 SSL TLS 모드 화면
클라우드프레어 SSL TLS 모드 화면

3. 도메인 연결 — 네임서버 변경

① 사이트 추가

클라우드플레어 가입 후 Add a Site에 도메인을 입력하고 Free 플랜을 선택합니다.

② DNS 레코드 확인

기존 호스팅의 A 레코드와 CNAME이 자동으로 불러와집니다. 두 가지를 확인하세요.

  • A 레코드가 실제 서버 IP를 가리키는가
  • 프록시 상태(주황색 구름)가 켜져 있는가 — 회색 구름이면 CDN·보안이 전혀 적용되지 않습니다

메일 서버용 MX 레코드는 프록시 대상이 아닙니다. 건드리지 마세요.

③ 네임서버 교체

도메인 등록기관(가비아, 호스팅케이알, 후이즈, Cloudflare Registrar 등) 관리 페이지에서 네임서버 1·2차를 클라우드플레어가 지정한 주소로 바꿉니다.

Copy예: ana.ns.cloudflare.com
    bob.ns.cloudflare.com
Code language: PHP (php)

④ 전파 확인

대시보드에서 도메인 상태가 Active로 바뀌면 완료입니다. 보통 수 분에서 수 시간, 최대 24시간까지 걸립니다.

클라우드플레어 설치, 네임서버 변경 후 10분정도 기다리면 이렇게 사용 준비가 되었다고 표시된다
클라우드플레어 설치, 네임서버 변경 후 10분정도 기다리면 이렇게 사용 준비가 되었다고 표시된다

4. 클라우드플레어 설치 보안 세팅 — 무료 플랜에서 할 수 있는 것

① Bot Fight Mode 켜기

경로: Security → Settings → Bot traffic 필터 → Bot fight mode 토글 ON

클라우드플레어의 머신러닝 엔진이 알려진 봇 패턴을 탐지해 CPU 연산이 필요한 챌린지를 던집니다. 봇 입장에서 요청당 비용이 올라가므로 자동화 트래픽이 줄어듭니다.

여기에 중요한 제약이 있습니다. Bot Fight Mode는 WAF 커스텀 규칙이나 Page Rules로 예외 처리(Skip)할 수 없습니다. 별도 파이프라인에서 동작하기 때문입니다. 이 점이 뒤에 나올 REST API 오류 해결법과 직결됩니다.

클라우드플레어 설치, Bot Fight Mode 켜기
클라우드플레어 설치, Bot Fight Mode 켜기

② 국가 기반 챌린지 — 신중하게

경로: Security → Security rules → Create rule → Custom rules

CopyRule name: 해외 저품질 트래픽 챌린지
Field: Country
Operator: is in
Value: (실제 스캔이 몰리는 국가만)
Action: Managed Challenge
Code language: PHP (php)

Block 대신 Managed Challenge를 쓰는 이유는 타당합니다. 사람은 체크박스 한 번으로 통과하고 자동화 크롤러만 걸러지므로, 오탐 피해가 훨씬 작습니다.

워드프레스 클라우드플레어 설치 — 보안과 속도를 한 번에 잡는 실전 세팅 1

다만 국가를 넓게 잡으면 손해입니다. 싱가포르는 아시아 트래픽의 주요 경유지이고, 중국에도 실제 독자가 있을 수 있습니다. 국가만으로 자르기보다는 아래 조합을 권합니다.

조건 조합의미
Country = CN AND Threat Score > 10스캔성 요청만 정밀 타격
Country = CN AND URI Path contains /wp-login.php로그인 공격만 차단
Bot Score < 30 (Pro 이상)봇 점수 기반, 국가 무관

③ Rate Limiting — 무료 플랜의 실질 방어선

경로: Security → Security rules → Rate limiting rules

무료 플랜에서도 제한된 수의 Rate Limiting 규칙을 쓸 수 있습니다. 우선순위는 로그인과 XML-RPC입니다.

대상경로권장
로그인 무차별 대입/wp-login.php분당 5~10회 초과 시 Block
XML-RPC 공격/xmlrpc.php아예 차단 규칙 권장
REST API 남용/wp-json/분당 60회 수준

/xmlrpc.php는 워드프레스에서 거의 쓰지 않는다면 보안 규칙으로 통째로 막는 편이 낫습니다. 과거에는 핑백과 모바일 앱에서 썼지만 지금은 대부분 불필요합니다.

④ Free Managed Ruleset

무료 플랜에도 클라우드플레어가 관리하는 기본 룰셋이 제공됩니다. Security → Security rules → Managed rules 에서 활성화되어 있는지 확인하세요. 알려진 취약점 공격 패턴을 자동으로 막아줍니다.


워드프레스 클라우드플레어 설치 — 보안과 속도를 한 번에 잡는 실전 세팅 2

5. 무료 플랜의 규칙은 5개뿐 — 배분이 중요하다

이게 실전에서 가장 많이 걸리는 벽입니다. 무료 플랜은 커스텀 규칙을 최대 5개까지 만들 수 있습니다.

그래서 규칙을 아껴 써야 합니다. 우선순위 배분 예시입니다.

순번규칙목적
1관리자 IP 허용 (Skip)내 IP는 모든 검사 통과
2/wp-json/ 예외 (Skip)글 저장 오류 방지
3/xmlrpc.php 차단 (Block)공격 표면 제거
4국가 + 위협점수 챌린지해외 스캔 차단
5여유분문제 생겼을 때 긴급 예외용

5번을 비워두는 게 요령입니다. 클라우드플레어를 붙이고 나면 예상 못 한 곳에서 하나씩 문제가 생깁니다. 그때 쓸 카드를 남겨두세요. 규칙을 다 쓰면 급할 때 손을 못 씁니다.


6. 워드프레스 어드민 오류 — “서버에서 올바른 응답을 받을 수 없습니다”

클라우드플레어를 붙인 뒤 구텐베르크에서 글을 저장하면 이런 메시지가 뜰 수 있습니다.

업데이트에 실패했습니다. 서버에서 올바른 응답을 받을 수 없습니다. (Updating failed. The response is not a valid JSON response)

원인

워드프레스는 임시저장·발행 때 백그라운드에서 /wp-json/wp/v2/... 로 비동기 요청을 보냅니다. 클라우드플레어가 이 요청을 봇으로 오인해 챌린지 페이지(HTML)를 돌려주면, 워드프레스는 JSON을 기대했는데 HTML을 받았으므로 파싱에 실패합니다. 보안 기능이 정상 작동해서 생기는 부작용입니다.

잘못 알려진 해결법

인터넷 가이드에 이런 설명이 자주 보입니다.

Skip 규칙에서 “Bypass Bot Fight Mode” 체크박스를 켜세요

이 옵션은 일반 Bot Fight Mode에는 없습니다. Skip 액션에서 체크할 수 있는 것은 Super Bot Fight Mode(Pro 이상)이며, 무료 플랜의 Bot Fight Mode는 WAF 규칙으로 우회할 수 없습니다.

무료 플랜에서 실제로 되는 해결법

방법 1 — 관리자 IP를 IP Access Rule로 허용 (가장 확실)

경로: Security → WAF → Tools → IP Access rules (또는 Security → Security rules → IP Access rules)

CopyIP: 내 공인 IP
Action: Allow
Code language: PHP (php)

IP Access Rule이 먼저 매칭되면 Bot Fight Mode는 트리거되지 않습니다. 이것이 무료 플랜에서 Bot Fight Mode를 실질적으로 피하는 유일한 정석입니다.

집에서 쓰는 회선은 유동 IP라서 주기적으로 바뀝니다. 바뀔 때마다 갱신해야 하니, 한 달에 한 번 확인하는 습관을 들이거나 한국 통신사 IP 대역을 통째로 넣지 마세요(보안이 무너집니다).

방법 2 — /wp-json/ 경로 예외

경로: Security → Security rules → Create rule → Custom rules

CopyRule name: WordPress REST API 예외
Field: URI Path
Operator: contains
Value: /wp-json/
Action: Skip
체크: All remaining custom rules
      All rate limiting rules
      All managed rules
Code language: PHP (php)

이 규칙은 커스텀 규칙·Rate Limiting·관리형 룰셋을 건너뜁니다. Bot Fight Mode는 건너뛰지 못합니다. 그래서 방법 1과 함께 써야 완전합니다.

방법 3 — Bot Fight Mode를 끄는 선택

글 저장 오류가 계속되면 Bot Fight Mode를 잠시 끄고, 대신 Rate Limiting과 국가 챌린지로 방어하는 방법도 있습니다. Bot Fight Mode가 주는 이득보다 어드민 스트레스가 크다면 합리적인 선택입니다.


7. 실제 방문자 IP 복원 — 이걸 빼면 보안 플러그인이 망가진다

클라우드플레어를 붙이면 서버가 보는 모든 방문자 IP가 클라우드플레어의 IP로 바뀝니다. 그러면 워드프레스 보안 플러그인(Wordfence, iThemes Security 등)과 댓글 스팸 필터가 전부 오작동합니다. 모든 방문자가 같은 IP에서 오는 것처럼 보이기 때문입니다.

증상원인
특정 국가 차단 플러그인이 전부 차단모두 클라우드플레어 IP로 인식
로그인 시도 제한이 정상 작동 안 함동일 IP로 카운트
댓글 스팸 필터 오탐IP 기반 판정 불가
서버 접속 로그 분석 불가전부 CF IP

해결은 두 가지 중 하나입니다.

  1. 호스팅 패널에서 mod_cloudflare 또는 mod_remoteip 모듈 활성화 — 카페24, 클라우드웨이즈 등은 옵션으로 제공합니다. Cloudways는 Cloudflare Enterprise 연동 시 자동 처리됩니다.
  2. 워드프레스 플러그인 사용 — “Cloudflare Real IP” 계열 플러그인이 CF-Connecting-IP 헤더를 읽어 실제 IP로 복원합니다.

이 단계를 건너뛰면 클라우드플레어로 얻은 보안 이득의 상당 부분이 워드프레스 안에서 상쇄됩니다.


8. 속도 설정 — 지금은 없는 기능이 있다

Auto Minify는 2024년 8월에 종료됐다

과거 클라우드플레어 강좌의 단골이었던 Auto Minify(HTML·CSS·JS 압축)는 2024년 8월 5일부로 서비스가 종료되었습니다. 대시보드에서 찾을 수 없는 게 정상입니다.

대안은 워드프레스 안에서 처리하는 것입니다.

플러그인특징
LiteSpeed CacheLiteSpeed 서버일 때 가장 강력. 무료
WP Rocket유료지만 설정이 단순하고 안정적
Autoptimize무료, CSS·JS 최적화 세밀 조정 가능

Browser Cache TTL

경로: Caching → Configuration → Browser Cache TTL

Respect Existing Headers 또는 4시간 ~ 1일을 권장합니다. 너무 길게 잡으면 CSS를 수정해도 방문자 브라우저에 옛 파일이 남습니다.

캐시에서 제외해야 하는 경로

경로이유
/wp-admin/관리자 페이지 캐싱 금지
/wp-login.php로그인 세션
/wp-json/REST API
장바구니·결제 페이지우커머스 사용 시 필수

Rocket Loader는 신중하게

Rocket Loader는 JS 실행을 지연시켜 초기 로딩을 빠르게 하지만, 애드센스·결제·슬라이더 플러그인과 충돌이 잦습니다. 광고가 안 뜨거나 레이아웃이 깨지면 가장 먼저 이 기능을 의심하세요. 경로는 Speed → Optimization → Rocket Loader입니다.

APO — 유료지만 효과가 확실한 선택

Automatic Platform Optimization(APO) 은 HTML까지 엣지에서 캐싱해 워드프레스의 동적 페이지 응답 속도를 크게 개선합니다. 무료 플랜에서 월 5달러의 추가 비용이 들고, Pro 이상 플랜에서는 무료로 포함됩니다.

항목무료 (APO 없음)APO 사용
정적 파일 캐싱OO
HTML 캐싱X (매번 원본 요청)O
원본 서버 부하높음크게 감소
비용0월 5달러

방문자가 많거나 원본 서버가 약하면 5달러가 아깝지 않습니다. 반대로 트래픽이 적으면 무료 캐싱만으로 충분합니다.


9. 애드센스 여백 버그

클라우드플레어와 직접 관련은 없지만, 설정 후 사이트를 점검하다 보면 자주 발견되는 문제입니다.

원인

헤더의 애드센스 코드가 고정 픽셀로 작성되어 있으면, 광고가 낙찰되지 않았을 때(Unfilled) 빈 상자가 그 크기만큼 화면을 차지합니다.

Copy<!-- 문제가 되는 형태 -->
<ins class="adsbygoogle" style="display:inline-block;width:970px;height:250px" ...>
Code language: PHP (php)

해결 1 — 반응형 코드로 교체

Copy<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-XXXXXXXX"
     data-ad-slot="XXXXXXXX"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
Code language: PHP (php)

해결 2 — 미송출 광고는 아예 숨기기

테마의 추가 CSS(외모 → 사용자 정의하기 → 추가 CSS)에 넣습니다.

Copyins.adsbygoogle[data-ad-status="unfilled"] {
    display: none !important;
}
Code language: PHP (php)

이 한 줄로 빈 광고 박스가 레이아웃에서 완전히 사라집니다.


10. 설치 후 24~48시간 체크리스트

확인 항목확인 방법정상 기준
도메인 상태대시보드 메인Active
HTTPS브라우저 주소창자물쇠, 리다이렉트 루프 없음
SSL 모드SSL/TLS → OverviewFull (strict)
프록시DNS 레코드주황 구름 ON
글 저장구텐베르크에서 테스트 발행오류 없음
실제 IP보안 플러그인 대시보드방문자별 IP가 다르게 표시
봇 차단Security → Analytics → Events봇 요청 차단 확인
광고 노출애드센스 보고서여백 없음, 노출 범위 안정
페이지 속도PageSpeed Insights개선 전후 비교
검색 유입서치콘솔색인 오류 없음

서치콘솔을 반드시 함께 보세요. 챌린지 규칙을 잘못 걸면 구글봇이 차단될 수 있습니다. 클라우드플레어는 검증된 봇(Googlebot 등)을 자동으로 통과시키지만, 국가 규칙에 미국이 들어가 있으면 이야기가 달라집니다.


정리

클라우드플레어는 무료로도 워드프레스 운영의 질을 크게 바꿉니다. 다만 성패를 가르는 것은 기능을 얼마나 많이 켜느냐가 아니라 순서와 예외 처리입니다.

세 가지만 기억하세요.

첫째, SSL/TLS를 Full (strict)로 먼저 바꿉니다. 이걸 건너뛰면 나머지가 전부 무의미해집니다.

둘째, 무료 플랜의 커스텀 규칙은 5개입니다. 다 쓰지 말고 하나는 비워두세요.

셋째, Bot Fight Mode는 WAF 규칙으로 우회할 수 없습니다. 관리자 IP를 IP Access Rule로 허용하는 것이 무료 플랜의 정답입니다.

이 세 개만 지키면 나머지 설정은 문제없이 얹힙니다.


이 글은 2026년 11월 기준 클라우드플레어 대시보드와 공식 문서를 참고해 작성했습니다. 클라우드플레어는 대시보드 구조를 자주 개편하므로, 메뉴 위치가 다르면 검색창에 기능명을 입력해 찾으시면 됩니다. 서버 환경(호스팅 종류, PHP 버전, 사용 플러그인)에 따라 결과가 달라질 수 있습니다.

guest
0 Comments
Oldest
Newest