
🔍 웹 서버의 404 에러 로그 확인하기
웹 서버에서 발생하는 404 에러 로그를 확인하는 방법을 실습해 보겠습니다.
본격적인 실습에 들어가기 전에, 먼저 404 에러의 개념과 HTTP 상태 코드 체계를 간단히 짚고 넘어가겠습니다.
1. 404 에러란 무엇인가?
웹에서 요청과 응답은 항상 상태 코드(Status Code)와 함께 전달됩니다.
-
200 OK
요청이 정상적으로 처리되어 응답이 성공적으로 반환됨.
(예: HTML 문서, JSON 데이터 등) -
404 Not Found
요청한 URL 경로가 서버에 존재하지 않을 때 반환됨.
(예: 존재하지 않는 페이지 접근 시) -
500 Internal Server Error, 502 Bad Gateway
서버 내부 문제나 게이트웨이 오류 발생 시 반환됨.
➡️ 즉, 404 Not Found
는 도메인은 올바르지만 URL 경로(path)가 잘못되었을 때 발생하는 오류 코드입니다.
2. 실습 환경 준비
-
리눅스 배포판: Rocky Linux 9
-
웹 서버: Nginx
-
패키지 관리자: DNF
Nginx 설치 및 실행
sudo dnf install -y nginx sudo systemctl start nginx sudo systemctl status nginx
-
status
명령어에서running
상태를 확인하면 정상적으로 실행 중입니다. -
기본적으로 80번 포트에서 서비스가 실행됩니다.
3. 정상적인 접근 확인
-
기본 페이지 요청
curl http://127.0.0.1
-
응답으로 Nginx 기본 HTML 페이지가 반환됩니다.
-
상태 코드 확인
curl -I http://127.0.0.1
-
200 OK
상태 코드와 함께 응답 헤더를 확인할 수 있습니다.
-
로그 파일 확인
cat /var/log/nginx/access.log
-
200
상태 코드 로그가 기록된 것을 확인할 수 있습니다.
4. 404 에러 발생시키기
이번에는 존재하지 않는 URL 경로를 요청해 보겠습니다.
curl http://127.0.0.1/test
-
/test
경로가 정의되어 있지 않기 때문에404 Not Found
에러가 발생합니다.
로그 파일에서 확인
cat /var/log/nginx/access.log
-
이제
404
상태 코드가 기록된 로그를 확인할 수 있습니다.
5. 로그에서 404만 추출하기
서비스 운영 중에는 로그가 매우 많이 쌓이기 때문에, 원하는 코드만 추출하는 방법이 유용합니다.
grep "404" /var/log/nginx/access.log
-
404
에러 로그만 출력됩니다.
awk '$9 == 404 {print $0}' /var/log/nginx/access.log
-
9번째 필드(상태 코드)
가404
인 로그만 추출합니다. -
이를 통해 사용자가 어떤 잘못된 URL을 요청했는지 확인할 수 있습니다.
6. 활용 및 보안 관점
-
단순히 사용자가 오타를 입력해서 발생할 수도 있지만,
-
악의적인 봇(bot)이나 공격자가 존재하지 않는 경로로 접근을 시도하면서 발생할 수도 있습니다.
➡️ 따라서 404 로그 분석
은 단순한 디버깅을 넘어 보안 관점에서의 탐지에도 중요합니다.
7. 정리
이번 실습에서는 다음을 확인했습니다:
-
404 Not Found 에러의 개념과 발생 원리
-
curl
을 이용해 존재하지 않는 URL 요청으로 404 에러 발생시키기 -
/var/log/nginx/access.log
를 통해 200/404 로그 확인 -
grep
,awk
를 활용한 404 로그 추출
👉 이를 통해 단순한 웹 서버 실습을 넘어, 운영 환경에서 로그 분석의 중요성을 이해할 수 있었습니다.
추가적으로 리눅스 기초 명령어 공부하고 싶다면 왕초보를 위한 리눅스 기초 강의를 참고하세요. https://reallinux.co.kr/course/linux_beginner