카테고리 없음

Nginx 접속 404 오류 원인과 해결 방법: 파일 경로와 서버 설정 점검하기

14722 2026. 9. 16. 19:15

웹사이트를 운영하다 보면 특정 페이지에 접속했을 때 404 Not Found 오류가 발생하는 경우가 있습니다. 특히 Nginx를 웹 서버로 사용하는 환경에서는 파일이 실제로 존재하는데도 404 오류가 나타나거나, 특정 URL에서만 페이지를 찾지 못하는 문제가 발생할 수 있습니다.

Nginx의 404 오류는 단순히 파일이 없다는 의미만을 나타내지는 않습니다. 파일 경로, root 설정, location 설정, URL 오타, 권한, 리버스 프록시 구성 등 다양한 원인이 있을 수 있습니다.

이번 글에서는 Nginx에서 404 오류가 발생하는 주요 원인을 살펴보고, 서버 설정과 파일 경로를 단계적으로 점검하는 방법을 알아보겠습니다.

Nginx 404 오류란?

HTTP 상태 코드 404 Not Found는 웹 서버가 클라이언트의 요청을 처리했지만 요청한 리소스를 찾지 못했다는 의미입니다.

예를 들어 다음과 같은 주소로 접속했다고 가정해 보겠습니다.

https://example.com/index.html

Nginx가 해당 요청을 처리하면서 서버에 index.html 파일이 없거나 설정된 경로에서 해당 파일을 찾지 못하면 404 오류를 반환할 수 있습니다.

중요한 점은 404 오류가 반드시 파일 삭제 때문에 발생하는 것은 아니라는 것입니다.

Nginx 설정에서 잘못된 경로를 지정했거나 URL과 실제 파일 구조가 일치하지 않는 경우에도 동일한 오류가 나타날 수 있습니다.

Nginx 404 오류의 주요 원인

Nginx에서 404 오류가 발생하는 대표적인 원인은 다음과 같습니다.

  • 요청한 파일이 실제로 존재하지 않는 경우
  • Nginx의 root 경로가 잘못 설정된 경우
  • location 설정이 요청 URL과 맞지 않는 경우
  • URL 또는 파일명에 오타가 있는 경우
  • 대소문자가 서로 다른 경우
  • 파일 또는 디렉터리 권한 문제가 있는 경우
  • 리버스 프록시 설정이 잘못된 경우
  • 애플리케이션에서 존재하지 않는 경로를 반환하는 경우

따라서 404 오류가 발생했다면 한 가지 원인만 확인하기보다 URL → Nginx 설정 → 실제 파일 → 권한 → 애플리케이션 순서로 확인하는 것이 효율적입니다.

1. 요청한 파일이 실제로 존재하는지 확인하기

가장 먼저 확인해야 할 부분은 요청한 파일이 서버에 실제로 존재하는지 여부입니다.

예를 들어 Nginx 설정에 다음과 같이 지정되어 있다고 가정하겠습니다.

server {
    listen 80;
    server_name example.com;

    root /var/www/html;
}

사용자가 다음 주소로 접속한다면,

https://example.com/test.html

Nginx는 기본적으로 설정된 웹 루트 경로를 기준으로 test.html 파일을 찾게 됩니다.

따라서 서버에서 다음 명령으로 파일의 존재 여부를 확인할 수 있습니다.

ls -l /var/www/html/test.html

파일이 없다면 404 오류가 발생할 수 있습니다.

디렉터리 구조가 예상과 다르다면 실제 파일이 어느 위치에 있는지도 확인해야 합니다.

ls -la /var/www/html

2. Nginx root 설정 확인하기

Nginx 404 오류에서 자주 확인해야 하는 부분이 root 설정입니다.

예를 들어 다음과 같은 설정이 있다고 가정하겠습니다.

server {
    listen 80;
    server_name example.com;

    root /var/www/html;
}

이 경우 웹사이트의 기본 파일은 /var/www/html을 기준으로 검색됩니다.

만약 실제 파일이 다음 위치에 있다면,

/home/user/website/index.html

Nginx의 root 설정과 실제 파일 위치가 일치하지 않기 때문에 원하는 페이지를 찾지 못할 수 있습니다.

따라서 Nginx 설정 파일에서 root 경로를 확인해야 합니다.

일반적으로 다음 명령을 사용하면 현재 Nginx 설정을 확인하는 데 도움이 됩니다.

nginx -T

설정 내용을 확인하면서 rootlocation 항목을 함께 살펴보는 것이 좋습니다.

3. location 설정 확인하기

Nginx는 URL에 따라 어떤 설정을 적용할지 location 블록을 통해 결정합니다.

예를 들어 다음과 같은 설정이 있을 수 있습니다.

location / {
    root /var/www/html;
}

또는 특정 경로에 별도의 설정을 적용할 수도 있습니다.

location /images/ {
    root /var/www/html;
}

이때 사용자가 /images/photo.jpg에 접속했는데 실제 파일 구조가 설정과 맞지 않는다면 404 오류가 발생할 수 있습니다.

특히 locationroot를 함께 사용할 때는 URL 경로와 실제 서버의 디렉터리 구조가 어떻게 연결되는지 확인해야 합니다.

4. root와 alias의 차이 확인하기

Nginx에서 404 오류를 해결할 때 rootalias의 차이를 이해하는 것도 중요합니다.

예를 들어 다음과 같은 설정을 사용할 수 있습니다.

location /static/ {
    root /var/www/html;
}

이 경우 요청 URL과 실제 파일 경로가 연결되는 방식에 주의해야 합니다.

반면 alias는 지정한 URL 경로를 특정 디렉터리에 직접 연결할 때 사용합니다.

location /static/ {
    alias /var/www/static/;
}

설정 방식이 서로 다르기 때문에 파일의 실제 위치와 Nginx 설정을 함께 확인해야 합니다.

5. 파일명과 대소문자 확인하기

리눅스 서버에서는 파일명의 대소문자를 구분합니다.

예를 들어 서버에 다음 파일이 있다고 가정하겠습니다.

index.html

사용자가 다음과 같이 요청하면 정상적으로 처리될 수 있습니다.

/index.html

하지만 파일 이름이 Index.html이라면 /index.html 요청에서 404가 발생할 수 있습니다.

마찬가지로 다음 두 경로도 서로 다르게 취급될 수 있습니다.

/images/photo.jpg
/images/Photo.jpg

따라서 404 오류가 발생하면 URL과 실제 파일명의 철자 및 대소문자를 함께 확인해야 합니다.

6. Nginx 설정 문법 검사하기

Nginx 설정을 수정한 후에는 바로 서버를 재시작하기보다 먼저 설정 문법을 검사하는 것이 좋습니다.

다음 명령을 사용할 수 있습니다.

sudo nginx -t

정상적인 설정이라면 테스트 결과에 설정 파일의 문법이 정상이라는 메시지가 표시됩니다.

오류가 발견되면 Nginx를 재시작하기 전에 해당 설정부터 수정해야 합니다.

설정 수정이 정상적으로 완료되었다면 다음과 같이 Nginx를 다시 로드할 수 있습니다.

sudo systemctl reload nginx

reload는 현재 연결을 최대한 유지하면서 새로운 설정을 적용할 때 사용할 수 있습니다.

7. 파일 및 디렉터리 권한 확인하기

파일이 실제로 존재하는데도 문제가 계속된다면 파일과 디렉터리의 권한을 확인해야 합니다.

다음 명령으로 권한을 확인할 수 있습니다.

ls -l /var/www/html

디렉터리의 권한도 확인할 수 있습니다.

ls -ld /var/www/html

Nginx 프로세스가 해당 파일과 디렉터리에 접근할 수 있는 환경인지 확인하는 것이 중요합니다.

권한을 무작정 변경하기보다는 현재 서버의 사용자 및 그룹 구성과 웹 서버 실행 계정을 먼저 확인한 뒤 필요한 범위에서 수정하는 것이 안전합니다.

8. Nginx 로그 확인하기

설정을 확인했는데도 404 오류가 해결되지 않는다면 Nginx 로그를 확인하는 것이 가장 효과적인 방법 중 하나입니다.

일반적인 Nginx 환경에서는 다음과 같은 로그 파일을 사용할 수 있습니다.

/var/log/nginx/access.log
/var/log/nginx/error.log

실시간으로 접속 로그를 확인하려면 다음과 같이 사용할 수 있습니다.

sudo tail -f /var/log/nginx/access.log

오류 로그는 다음 명령으로 확인할 수 있습니다.

sudo tail -f /var/log/nginx/error.log

사용자가 어떤 URL을 요청했는지, Nginx가 어떤 상태 코드를 반환했는지 확인하면 문제의 원인을 좁히는 데 도움이 됩니다.

9. 리버스 프록시 환경에서 404 확인하기

Nginx를 단순한 정적 웹 서버가 아니라 리버스 프록시 서버로 사용하는 경우에는 확인해야 할 부분이 더 많아집니다.

예를 들어 다음과 같은 설정이 있을 수 있습니다.

location / {
    proxy_pass http://127.0.0.1:3000;
}

이 환경에서는 Nginx 자체에 파일이 없어도 요청을 백엔드 애플리케이션으로 전달할 수 있습니다.

따라서 404 오류가 발생하면 Nginx 설정뿐만 아니라 백엔드 서버가 해당 URL을 처리할 수 있는지도 확인해야 합니다.

즉, Nginx에서 발생한 404인지 애플리케이션에서 반환한 404인지 구분하는 과정이 필요합니다.

10. 수정 후 캐시도 확인하기

설정을 수정했는데 브라우저에서 계속 404가 나타난다면 브라우저 캐시나 CDN 캐시 등의 영향을 확인할 필요가 있습니다.

먼저 브라우저에서 강력 새로고침을 시도하고, 서버 측 캐시나 CDN을 사용하고 있다면 해당 캐시가 오래된 오류 페이지를 제공하고 있는지도 확인해야 합니다.

다만 캐시 문제로 판단하기 전에 서버에서 실제 요청이 정상적으로 처리되는지 먼저 확인하는 것이 좋습니다.

Nginx 404 오류 점검 순서

404 오류가 발생했을 때는 다음 순서로 점검하면 문제를 비교적 빠르게 찾을 수 있습니다.

첫 번째, URL 확인

요청한 주소에 오타가 없는지 확인합니다.

두 번째, 파일 확인

실제 서버에 요청한 파일이 존재하는지 확인합니다.

세 번째, root 확인

Nginx의 root가 실제 웹 파일 위치와 일치하는지 확인합니다.

네 번째, location 확인

해당 URL에 적용되는 location 설정을 확인합니다.

다섯 번째, 권한 확인

Nginx가 파일과 디렉터리에 접근할 수 있는지 확인합니다.

여섯 번째, 로그 확인

access.logerror.log를 확인하여 실제 요청 처리 과정을 살펴봅니다.

일곱 번째, 백엔드 확인

리버스 프록시 환경이라면 애플리케이션 서버의 라우팅도 함께 확인합니다.

마무리

Nginx에서 발생하는 404 Not Found 오류는 파일이 없을 때만 발생하는 문제가 아닙니다. 실제 파일이 존재하더라도 root, location, alias, URL 경로, 권한 또는 리버스 프록시 설정이 잘못되면 404 오류가 발생할 수 있습니다.

따라서 문제를 해결할 때는 무작정 설정을 변경하기보다 요청 URL과 실제 파일 위치를 먼저 확인한 다음 Nginx 설정과 로그를 단계적으로 점검하는 방법이 효율적입니다.

특히 운영 중인 서버라면 설정을 변경하기 전에 nginx -t 명령으로 문법을 검사하고, 변경 후에는 로그를 통해 정상적으로 요청이 처리되는지 확인하는 습관이 중요합니다.

Nginx 404 오류는 원인을 하나씩 분리해서 확인하면 대부분의 경우 문제의 위치를 좁혀갈 수 있습니다. 웹 서버를 처음 운영한다면 파일 경로와 Nginx 설정의 관계부터 이해하는 것이 안정적인 서버 운영에 도움이 됩니다.