목록으로

아이차트 개발 서버가 구글 SEO에 노출된 문제 해결 과정

약 3분 읽기Development댓글로 이동
main
date
Aug 13, 2025
slug
dev-server-seo-block
author
status
Public
tags
summary
type
Post
thumbnail
category
Development
updatedAt
Oct 12, 2025 01:10 PM
최근 개발 서버가 구글 검색 결과에 노출되는 문제가 발생했다.
개발용 서버라 SEO에 노출될 필요가 전혀 없었고, 보안상으로도 바람직하지 않았다.
이에 따라 구글 인덱스 제거 및 크롤링 방지를 위한 일련의 조치를 진행했다.
 
아이차트의 개발 서버는 내부 테스트용으로만 사용되지만, 별도의 접근 제한(IP 제한 등)이 설정되어 있지 않아 구글 검색 엔진이 페이지를 수집한 상황이었다.
 
운영에 직접적인 문제는 없었지만, 개발용 데이터가 노출되는 건 바람직하지 않으므로 이를 근본적으로 차단하기로 했다.
 
  1. robots.txt를 통한 크롤링 차단
User-agent: * Disallow: /
우선 개발 서버에서의 추가 인덱싱을 방지하기 위해 robots.txt를 설정했다. 모든 검색엔진 봇(User-agent)이 사이트의 어떤 경로도 크롤링하지 못하도록 차단한다.
 
근데 여기서 한 가지 고민은 운영 서버의 경우 모든 페이지가 수집되어야하기 때문에 개발 서버와 다르다.
 
운영의 경우 public > robots.txt를 생성하여 사용한다.
개발의 경우 개발 서버에 직접 robots.txt를 생성한다.
 
notion image
 
Nginx server block 에 서브 도메인에 해당한 요청일 경우 서버 내의 robots.txt를 서빙한다.
 
# nginx.conf server { server_name dev.ichart.kr; # 기타 생략... location = /robots.txt { alias /home/instiz/robots/dev-ichart.robots.txt; default_type text/plain; }
 
  1. 구글 서치 콘솔을 통한 인덱스 삭제 요청
구글 서치 콘솔(Google Search Console)에 아이차트 도메인을 등록하고 문제가 된 개발용 서브 도메인에 대해 인덱스 삭제 요청을 진행했다.
삭제 요청 약 4시간 후, 해당 페이지들은 ‘임시 삭제’ 상태로 처리되었으며 실제 구글 검색 결과에서도 사라졌다.
(참고로, 임시 삭제 상태는 일정 기간 후 자동으로 영구 삭제된다.)
 
  1. IP 차단을 통한 접근 제어
추가적인 보안 강화를 위해 개발 서버와 관리자(Admin) 페이지는 내부 IP만 접근 가능하도록 설정했다.
 
처음에는 Nginx Server Block에 허용 IP 리스트를 추가하고, 그 외 접근 시 차단 페이지로 리다이렉트하도록 설정했으나 정상 동작하지 않았다.
 
원인을 살펴보니, 우리 서비스는 Cloudflare를 통해 서빙되고 있었고, Cloudflare가 실제 사용자 대신 자체 IP로 요청을 전달하기 때문에 서버 단에서는 항상 Cloudflare의 IP로만 접근이 인식되고 있었다.
즉, 사용자 IP가 그대로 전달되지 않아 IP 기반 차단이 무의미했던 것이다.
 
real_ip_header CF-Connecting-IP;
Nginx 설정에서 real_ip_header CF-Connecting-IP;와 같은 Cloudflare의 실제 사용자 IP 전달 헤더를 신뢰하도록 설정해야 한다.
 
우선 Cloudflare에서 WAF Rules를 추가해두었다.
 
notion image
 
 
  1. 메타 태그 추가 작업
<meta name="robots" content="noindex, nofollow">
 
어떻게 처리할지 아직 고민중