win-j의 자유로운 블로그

개발일지 - Django 사이트에 /wp-admin 요청이 계속 들어온다면? (Nginx에서 차단하는 방법)

개발일지 · 2026.03.25 · 조회 2


개발일지 - 방문자 수집

이전 글에서 방문자 수집(봇, 관리자, 크롤러)을 제어하는 글을 작성하고 방문자 수도 확실히 줄었습니다. 하지만 여전히 남은 문제가 바로 워드프레스나 PHP 파일로의 접근이 많아 해당 접근까지도 방문자 수 수집에 포함되어 방문자 수를 어지럽히고 있어 이번에는 Nginx에서 워드프레스, .php로 접근하는 것을 사전에 차단하는 작업을 진행했습니다.





/wp-admin/
/wp-includes/
/wp-content/uploads/
/xmlrpc.php
/admin.php
/info.php
/1.php


워드프레스나 php를 사용하지 않는 python Django 웹에서 이러한 접근은 정상 사용자가 아닌 봇(Bot) 또는 해킹 스케너로 워드프레스의 취약점이나 존재하지 않는 PHP파일 요청, 자동화된 무작위 접근을 전 세계 서버를 대상으로 무작위 반복을 실행하는 것들입니다. 이런 접근이 방문자 통계를 더럽히는 것 뿐만 아니라 저 처럼 개인 서버에서 운영하는 웹사이트에서 로그 데이터를 과도하게 증가시켜 서버 리소스 낭비가 심하게 되고 또 불필요한 요청이 많아지기 때문에 서버가 느려지는 원인이 될 수 있습니다.




이런 접근은 Django에 요청하기 전에 Nginx에서 사전에 미리 필터를 통해서 접근을 막을 수 있습니다.


Nginx 보통 위치 - 

docker/nginx/default.conf

또는 -

/etc/nginx/conf.d/default.conf


Nginx 설정 파일을 열어 아래 내용을 server{ } 사이에 넣어주면 됩니다.

server {
    listen 80;
    server_name your-domain.com;

    # 🚫 워드프레스 공격 경로 차단
    location ~* ^/(wp-admin|wp-includes|wp-content|wordpress|xmlrpc\.php) {
        return 444;
    }

    # 🚫 PHP 요청 전체 차단 (Django라면 필요 없음)
    location ~* \.php$ {
        return 444;
    }

    # 🚫 숨김파일 차단 (.env, .git 등)location ~ /\. {
    deny all;
    }

    # 🚫민감 파일 차단location ~* \.(env|git|log|ini)$ {
    deny all;
    }

    location / {
        proxy_pass http://web:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}


워드프레스, .php의 요청을 차단하고 숨김파일 .env, .git 그리고 민감 파일 접근 log, ini 파일에 대한 차단도 같이 넣어주면 좋습니다. 또한 return 444;를 넣어서 응답 자체를 보내지 않고 연결 종료 시키면 됩니다. 적용 완료 후 Nginx 서버를 재실행 시켜주면 적용이 완료됩니다.