25일간 글이 하나도 검색에 안 나왔다

블로그에 글을 42개나 썼다. 열심히 썼다. 제목도 신경 쓰고, 본문도 잘 쓰고, 사이트맵도 제출했다. 그런데 네이버에서 검색하면 내 글이 단 하나도 안 나온다. 구글도 마찬가지다. site:daebakcode.com을 치면 페이지 목록은 뜨는데, 글 제목으로 검색하면 아무것도 안 나온다. 25일 동안. 진심으로 미칠 뻔했다.

“혹시 내 글이 너무 구린 건가?” 자괴감까지 들었다. 하지만 원인은 글의 품질이 아니었다. Cloudflare였다.

증상: 색인은 되는데 검색은 안 된다

구글에서 site:daebakcode.com을 치면 페이지 목록이 나온다. 아, 색인은 됐구나. 그런데 글 제목을 그대로 복붙해서 검색하면? 아무것도 안 뜬다.

네이버는 더 심각했다. 네이버 서치어드바이저를 확인해보니 카테고리 페이지만 색인되어 있었다. 개별 글 42개는 전부 누락. 크롤링 현황을 보니 25일 동안 네이버봇(Yeti) 방문이 딱 2회였다.

원인 분석: 의심가는 건 다 확인했다

robots.txt? 정상. 사이트맵? 정상 제출. noindex? 없다. 워드프레스 설정? 정상. 다 정상인데 왜 안 되는 거지?

진짜 원인: Cloudflare JS Challenge가 크롤러를 차단하고 있었다

구글 서치 콘솔에서 결정적인 단서를 발견했다.

“페이지 리소스 21개 중 12개를 로드하지 못했습니다”

페이지 소스를 열어보니 범인이 보였다.

__CF$cv$params
challenge-platform

Cloudflare가 모든 페이지에 JS Challenge 스크립트를 삽입하고 있었다. 네이버봇(Yeti)은 자바스크립트를 실행하지 못한다. 구글봇도 리소스를 제대로 로드하지 못해서 불완전한 색인이 되고 있었다.

Cloudflare AI Crawl Control에 네이버봇(Yeti) 자체가 목록에 없다. Bot Fight Mode는 꺼져있었는데도 JS Challenge가 삽입되고 있었다.

해결: Cloudflare 프록시 해제 + Let’s Encrypt SSL

1단계: Cloudflare DNS 설정 변경

Cloudflare 대시보드 → DNS → 프록시 상태를 “DNS only”로 변경

2단계: SSL 인증서 설치

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d 내도메인.com -d www.내도메인.com

3단계: 확인

프록시 해제 직후, 네이버봇이 바로 크롤링을 시작했다. 25일 동안 2번 오던 봇이 해제하자마자 들어온다 ㅋㅋ

Cloudflare 써도 되는 경우 vs 안 되는 경우

써도 되는 경우:

  • SEO가 중요하지 않은 웹앱, API 서버
  • DDoS 방어가 필수인 대형 서비스

쓰면 안 되는 경우:

  • 네이버 SEO가 중요한 블로그, 회사 홈페이지
  • 검색 유입이 핵심인 소규모 사이트

교훈: CDN이 SEO를 죽일 수 있다

25일이라는 시간을 날렸다. robots.txt도 정상, 사이트맵도 정상, 메타 태그도 정상인데 검색이 안 되면 — 서버 앞단에 뭐가 붙어있는지 확인해라.

특히 네이버봇은 JS를 실행하지 않는다. Cloudflare의 JS Challenge는 네이버 SEO와 완전히 양립 불가능하다.