Cloudflare 트래픽은 2만인데 애드센스 수익은 0.01달러인 이유
Cloudflare에서는 2만 건이 넘는 트래픽이 찍혔지만 Google AdSense 수익은 0.01달러에 불과했습니다. 블로그 운영 초기에 Cloudflare 요청 수와 실제 사람 방문, AdSense 페이지뷰가 왜 다르게 보이는지 정리했습니다.
블로그를 운영하다 보면 숫자에 쉽게 흔들린다.
특히 Cloudflare 대시보드에서 트래픽이 크게 찍히면 순간적으로 이런 생각이 든다.
“어? 내 블로그에 방문자가 이렇게 많이 들어온 건가?”
나도 비슷한 상황을 겪었다.
최근 7일 기준으로 Cloudflare에서는 꽤 큰 트래픽이 잡혔다.
| 지표 | 최근 7일 수치 |
|---|---|
| Cloudflare Web traffic | 약 23.21k |
| Cloudflare Workers invocations | 약 15.24k |
| Google AdSense 페이지뷰 | 68 |
| Google AdSense 광고 노출수 | 72 |
| Google AdSense 클릭수 | 1 |
| Google AdSense 수익 | $0.01 |
처음에는 조금 이상했다.
Cloudflare에서는 2만 건이 넘는 트래픽이 찍히는데, AdSense에서는 페이지뷰가 68밖에 나오지 않았다.
수익도 거의 없었다.
그런데 자세히 보니 이유는 꽤 명확했다.
Cloudflare의 트래픽 숫자는 실제 사람이 블로그 글을 읽은 페이지뷰가 아니라, 사이트에 들어온 모든 요청 수에 가깝다.
이 글은 내가 직접 겪은 Cloudflare 트래픽과 AdSense 수익 차이를 정리한 기록이다.
Astro 블로그를 운영하거나, Cloudflare Workers Static Assets로 배포하거나, AdSense를 붙인 지 얼마 안 된 사람이라면 비슷한 상황을 겪을 수 있다.
결론부터 말하면
Cloudflare 트래픽이 2만 건이라고 해서 사람이 2만 번 방문했다는 뜻은 아니다.
Cloudflare에는 아래 요청이 모두 잡힐 수 있다.
- HTML 페이지 요청
- CSS 파일 요청
- JavaScript 파일 요청
- 이미지 파일 요청
- favicon 요청
- API 요청
- 검색엔진 크롤러 요청
- 보안 스캐너 요청
- 봇 트래픽
- 존재하지 않는 WordPress 경로 요청
- 자동화된 취약점 스캔 요청
반면 AdSense 페이지뷰는 Google 광고가 표시되는 페이지를 사용자가 본 경우에 집계된다.
Google AdSense 도움말도 page view를 “Google 광고가 표시되는 페이지를 사용자가 볼 때 보고서에 집계되는 값”으로 설명한다. 한 페이지에 광고 단위가 여러 개 있어도 페이지뷰는 한 번으로 계산된다.
즉, Cloudflare의 요청 수와 AdSense 페이지뷰는 처음부터 같은 개념이 아니다.
내가 본 실제 상황
내 블로그는 현재 Astro 기반으로 만들었고, Cloudflare Workers Static Assets로 배포하고 있다.
구성은 대략 이렇다.
| 항목 | 사용 중인 구성 |
|---|---|
| 프레임워크 | Astro |
| 콘텐츠 | MDX |
| 스타일 | Tailwind CSS |
| 배포 | Cloudflare Workers Static Assets |
| 수익화 | Google AdSense |
| 도메인 | chailmon.com |
그리고 국가 감지를 위해 /api/geo API도 추가해두었다.
이 API는 접속자의 국가에 따라 한국 접속자는 한글 이미지, 해외 접속자는 영어 이미지를 보여주기 위해 만든 기능이다.
기능 자체는 정상적으로 동작했다.
예를 들어 /api/geo에 접속하면 아래처럼 응답이 나온다.
{"country":"KR"}
그런데 Cloudflare 대시보드를 보니 Workers invocations가 15k 이상 찍혔다.
처음에는 “방문자가 많아진 건가?”라고 생각했지만, AdSense 수치를 함께 보니 아니었다.
AdSense 기준으로는 최근 7일 페이지뷰가 68, 광고 노출수가 72, 수익은 $0.01 수준이었다.
즉, 광고가 아예 안 뜬 것은 아니었다.
광고는 정상적으로 노출됐고, 클릭도 1번 있었다.
문제는 수익화 가능한 실제 페이지뷰가 너무 적었다는 것이다.
왜 Cloudflare와 AdSense 숫자가 이렇게 다를까?
가장 큰 이유는 두 서비스가 보는 지표가 다르기 때문이다.
1. Cloudflare는 페이지뷰가 아니라 요청 수에 가깝다
사용자가 블로그 글 하나를 열었다고 가정해보자.
겉으로는 글 하나를 본 것 같지만, 실제 브라우저는 여러 파일을 요청한다.
예를 들어 이런 요청이 생길 수 있다.
| 요청 | 설명 |
|---|---|
/blog/example-post/ | HTML 문서 |
/assets/index.css | CSS 파일 |
/assets/index.js | JavaScript 파일 |
/images/og-default.svg | 이미지 파일 |
/favicon.ico | 파비콘 |
/api/geo | 국가 감지 API |
/adsbygoogle.js | 광고 스크립트 |
사람이 보기에는 페이지뷰 1회지만, Cloudflare에서는 여러 요청으로 잡힐 수 있다.
그래서 Cloudflare 요청 수는 AdSense 페이지뷰보다 훨씬 크게 보이는 것이 자연스럽다.
다만 내 경우처럼 Cloudflare는 23k인데 AdSense 페이지뷰가 68이라면, 단순 정적 파일 요청만으로 설명하기에는 차이가 크다.
이럴 때는 봇 트래픽을 의심해야 한다.
2. 봇 트래픽은 AdSense 수익으로 이어지지 않는다
Cloudflare 대시보드에서 Top paths를 보면 실제 블로그 글이 아닌 이상한 경로가 많이 보일 수 있다.
예를 들면 이런 식이다.
| 경로 | 의미 |
|---|---|
/mtg.php | 실제 블로그와 무관한 PHP 경로 요청 |
/xmlrpc.php | WordPress 취약점 스캔에서 자주 보이는 경로 |
/wp-login.php | WordPress 로그인 페이지를 찾는 봇 요청 |
/wp-admin/ | WordPress 관리자 경로 스캔 |
/dev/ui/docs/ | 실제 사이트와 무관한 자동화 요청 가능성 |
내 블로그는 Astro 정적 사이트라서 WordPress를 쓰지 않는다.
그런데도 /xmlrpc.php, /wp-login.php, /wp-admin/ 같은 요청이 들어올 수 있다.
이건 특정 사이트를 보고 요청하는 게 아니라, 인터넷 전체를 돌면서 취약한 WordPress 사이트를 찾는 자동화 봇이 무작위로 요청하는 경우가 많기 때문이다.
이런 요청은 Cloudflare 트래픽으로는 잡히지만, 실제 사람이 블로그 글을 읽은 것이 아니다.
당연히 AdSense 수익으로도 이어지지 않는다.
3. AdSense는 광고가 실제로 표시되는 페이지를 본다
AdSense에서 중요한 것은 Cloudflare 요청 수가 아니다.
AdSense 관점에서 중요한 것은 아래 지표다.
| 지표 | 의미 |
|---|---|
| 페이지뷰 | 광고가 표시되는 페이지가 조회된 횟수 |
| 광고 노출수 | 광고가 실제 표시된 횟수 |
| 클릭수 | 광고 클릭 횟수 |
| 페이지 CTR | 페이지뷰 대비 클릭 비율 |
| 페이지 RPM | 1,000 페이지뷰당 예상 수익 |
내 경우 최근 7일 기준으로 페이지뷰 68, 광고 노출수 72, 클릭수 1, 수익 $0.01이었다.
이 숫자를 보면 광고 설정 자체는 정상에 가깝다.
페이지뷰와 광고 노출이 있고, 클릭도 있었다.
다만 실제 사람이 읽은 페이지뷰가 너무 적기 때문에 수익이 거의 없는 것이다.
초보 블로거가 착각하기 쉬운 부분
처음 블로그를 운영하면 Cloudflare나 서버 로그의 숫자를 보고 실제 방문자가 많다고 착각하기 쉽다.
나도 처음에는 Cloudflare의 Web traffic 23k를 보고 “생각보다 트래픽이 많은데?”라고 생각했다.
하지만 실제로는 다음 지표를 분리해서 봐야 한다.
| 지표 | 어떻게 해석해야 할까 |
|---|---|
| Cloudflare requests | 사이트에 들어온 모든 요청 수 |
| Workers invocations | Worker가 처리한 요청 수 |
| AdSense page views | 광고가 표시된 페이지 조회 |
| Search Console clicks | Google 검색에서 실제 클릭된 수 |
| 실제 사람 방문 | AdSense, Search Console, Analytics를 함께 봐야 추정 가능 |
수익 관점에서는 Cloudflare requests보다 AdSense page views가 더 중요하다.
검색 유입 관점에서는 Google Search Console의 clicks와 impressions가 더 중요하다.
Cloudflare는 보안과 인프라 상태를 보는 데 유용하지만, 블로그 수익을 판단하는 핵심 지표로 쓰기에는 조심해야 한다.
그럼 무엇을 봐야 할까?
내가 보기에는 블로그 초기에 봐야 할 우선순위는 이렇다.
1. Google Search Console
가장 먼저 봐야 할 것은 Search Console이다.
확인할 지표는 아래다.
- 총 노출수
- 총 클릭수
- 평균 CTR
- 평균 게재순위
- 노출되는 검색어
- 클릭이 발생하는 글
- 색인 상태
Search Console은 “내 글이 Google 검색에서 보이고 있는지”를 알려준다.
AdSense 수익이 낮아도 Search Console 노출이 늘고 있다면 블로그는 성장 중일 수 있다.
반대로 Cloudflare 트래픽이 많아도 Search Console 클릭이 없다면, 그 트래픽은 실제 검색 유입과 거리가 있을 가능성이 크다.
2. AdSense 페이지뷰와 광고 노출수
광고 수익을 보려면 AdSense의 페이지뷰와 광고 노출수를 봐야 한다.
내 경우처럼 페이지뷰 68, 광고 노출수 72라면 광고는 정상적으로 뜨고 있다고 볼 수 있다.
다만 트래픽이 적으니 수익이 거의 안 나는 것이 정상이다.
3. Cloudflare Top paths
Cloudflare에서는 전체 트래픽 숫자보다 Top paths를 봐야 한다.
확인할 것:
- 실제 블로그 글 URL이 상위에 있는지
/api/geo가 과도하게 호출되는지/xmlrpc.php,/wp-login.php같은 봇 경로가 많은지- 존재하지 않는 URL 요청이 많은지
- 이미지나 정적 파일 요청이 과도한지
Top paths를 보면 트래픽의 정체가 어느 정도 드러난다.
4. User agents와 국가별 트래픽
가능하다면 User agents도 확인하면 좋다.
- Googlebot
- Bingbot
- AhrefsBot
- SemrushBot
- curl
- Python requests
- Go-http-client
- 알 수 없는 자동화 User-Agent
이런 요청이 많다면 실제 사람 트래픽보다 봇 트래픽 비중이 높을 수 있다.
국가별 트래픽도 참고할 수 있다.
물론 해외 독자가 실제로 들어올 수도 있지만, 한국어 블로그인데 갑자기 특정 해외 국가에서 비정상적으로 많은 요청이 들어온다면 자동화 요청일 가능성도 있다.
봇 트래픽은 무조건 막아야 할까?
무조건 막을 필요는 없다.
검색엔진 크롤러도 봇이다.
Googlebot, Bingbot처럼 정상적인 검색엔진 봇은 막으면 안 된다.
하지만 내 사이트와 전혀 관계없는 취약점 스캔 요청은 줄이는 것이 좋다.
예를 들면 Astro 블로그에서 아래 경로는 필요 없다.
/xmlrpc.php/wp-login.php/wp-admin//wp-content//mtg.php
이런 요청은 WordPress 기반 사이트를 찾는 봇일 가능성이 높다.
Cloudflare WAF Custom Rules를 쓸 수 있다면 아래처럼 차단 규칙을 고려할 수 있다.
(http.request.uri.path eq "/xmlrpc.php") or
(http.request.uri.path eq "/wp-login.php") or
(starts_with(http.request.uri.path, "/wp-admin")) or
(starts_with(http.request.uri.path, "/wp-content")) or
(http.request.uri.path eq "/mtg.php")
다만 처음부터 너무 공격적으로 차단하지는 않는 것이 좋다.
정상적인 검색엔진 봇이나 실제 사용자 요청까지 막지 않도록, 먼저 로그를 보고 확실히 필요 없는 경로부터 차단하는 편이 안전하다.
/api/geo 호출도 확인해야 한다
내 블로그는 Cloudflare 국가 감지 API를 사용하고 있다.
한국 접속자에게는 한글 이미지, 해외 접속자에게는 영어 이미지를 보여주기 위해 /api/geo를 만들었다.
이런 구조에서는 방문자가 페이지를 열 때마다 API가 호출될 수 있다.
즉, 실제 페이지뷰보다 Workers invocations가 더 많이 잡힐 수 있다.
그래서 Cloudflare Workers invocations가 높게 보이면 아래를 확인해봐야 한다.
/api/geo가 모든 페이지에서 호출되는지- 한 페이지에서 여러 번 호출되지는 않는지
- 캐싱할 수 있는 구조인지
- 클라이언트에서 불필요하게 반복 호출하지 않는지
- 봇도
/api/geo를 호출하고 있는지
API 자체가 문제라는 뜻은 아니다.
다만 Workers 과금이나 호출 수를 관리하려면 어떤 경로가 많이 호출되는지 확인할 필요가 있다.
지금 단계에서 광고 위치를 바꿔야 할까?
내 생각에는 아직 아니다.
페이지뷰가 68 정도라면 광고 위치를 바꿔도 의미 있는 판단을 하기 어렵다.
예를 들어 광고를 본문 상단에 넣었더니 수익이 늘었다고 해도, 표본이 너무 작으면 우연일 수 있다.
광고 배치 테스트는 최소한 아래 정도가 된 뒤에 하는 것이 낫다.
- 하루 페이지뷰 100 이상
- 최근 28일 페이지뷰 3,000 이상
- 검색 유입이 꾸준히 발생
- 글별 방문 패턴이 어느 정도 보임
그전까지는 광고 위치보다 콘텐츠와 검색 유입이 더 중요하다.
지금은 광고를 더 공격적으로 넣기보다, 글을 더 쌓고 Search Console 데이터를 보는 단계다.
앞으로 내가 할 일
이번 경험을 통해 내가 정리한 다음 단계는 이렇다.
1. Cloudflare Top paths 확인
전체 트래픽 숫자보다 어떤 경로가 많이 요청되는지 먼저 본다.
특히 실제 글 URL이 아니라 봇 경로가 많다면 별도로 분리해서 본다.
2. 불필요한 봇 경로 차단
Astro 블로그와 무관한 WordPress 경로는 Cloudflare WAF에서 차단을 고려한다.
다만 Googlebot이나 정상 검색엔진 봇은 막지 않는다.
3. Search Console 중심으로 콘텐츠 판단
AdSense 수익보다 먼저 Search Console 노출과 클릭을 본다.
초기 블로그는 수익보다 색인과 검색 노출이 먼저다.
4. 글 수 늘리기
24개 글로 AdSense 수익을 판단하기는 이르다.
우선은 실제 검색 의도가 있는 글을 50개 이상 쌓는 것이 먼저다.
특히 내가 운영 중인 블로그에서는 아래 주제가 더 맞아 보인다.
- Astro 블로그 운영 기록
- Cloudflare 배포와 설정
- AdSense 수익화 시행착오
- AI 코딩툴 사용기
- VS Code / Cursor / Claude Code 세팅
- 개인 개발자 수익화 실험
5. 실제 경험 기반 글을 늘리기
GPT나 AI 검색이 단순 정보성 글을 많이 대체하는 시대에는, 단순 설명 글만으로는 클릭을 얻기 어렵다.
하지만 내가 직접 겪은 숫자, 실패, 스크린샷, 해결 과정은 여전히 가치가 있다.
이번 글도 그런 방향이다.
Cloudflare에서는 2만 트래픽이 찍혔지만, AdSense 수익은 0.01달러였다.
이건 단순 이론이 아니라 실제 운영 기록이다.
비슷한 상황을 겪는 사람에게는 오히려 이런 글이 더 도움이 될 수 있다.
결론
Cloudflare 트래픽 2만 건과 AdSense 수익 0.01달러는 모순이 아니다.
두 지표가 보는 대상이 다르기 때문이다.
Cloudflare는 사이트로 들어오는 다양한 요청을 보여준다.
그 안에는 실제 사람 방문도 있지만, 정적 파일 요청, API 호출, 검색엔진 크롤러, 취약점 스캔 봇, 자동화 요청도 포함될 수 있다.
반면 AdSense는 광고가 표시된 페이지뷰와 광고 노출, 클릭을 중심으로 수익을 계산한다.
그래서 블로그 운영 초기에 봐야 할 핵심은 Cloudflare의 큰 숫자가 아니다.
더 중요한 것은 아래다.
- Google Search Console에서 실제 검색 노출이 늘고 있는가
- AdSense에서 광고 페이지뷰가 늘고 있는가
- Cloudflare Top paths에서 봇 트래픽이 과도하지 않은가
- 실제 사람이 읽을 만한 글이 계속 쌓이고 있는가
지금 내 결론은 이렇다.
Cloudflare 숫자는 인프라와 보안을 보는 데 유용하지만, 블로그 수익성을 판단하는 지표로 쓰면 착각하기 쉽다.
블로그 수익은 결국 실제 사람이 읽는 페이지뷰와 검색 유입에서 나온다.
따라서 지금 해야 할 일은 광고 위치를 계속 바꾸는 것이 아니라, 실제 검색 유입이 생길 만한 글을 쌓고, Search Console과 AdSense 기준으로 천천히 확인하는 것이다.