일반적인 HTTP 오류 코드 문제를 해결하는 방법


소개

웹 서버 또는 애플리케이션에 액세스할 때 서버에서 수신한 모든 HTTP 요청은 HTTP 상태 코드로 응답됩니다. HTTP 상태 코드는 3자리 코드이며 5개의 다른 클래스로 그룹화됩니다. 상태 코드의 클래스는 첫 번째 숫자로 식별할 수 있습니다.

  • 1xx: 정보
  • 2xx: 성공
  • 3xx: 리디렉션
  • 4xx: 클라이언트 오류
  • 5xx: 서버 오류

이 가이드는 시스템 관리자의 관점에서 가장 일반적으로 발생하는 HTTP 오류 코드(예: 4xx 및 5xx 상태 코드)를 식별하고 문제를 해결하는 데 중점을 둡니다. 웹 서버가 특정 오류 코드로 요청에 응답하게 할 수 있는 많은 상황이 있습니다. 일반적인 잠재적 원인과 해결책을 다룰 것입니다.

클라이언트 및 서버 오류 개요

클라이언트 오류 또는 400에서 499까지의 HTTP 상태 코드는 사용자 클라이언트(예: 웹 브라우저 또는 기타 HTTP 클라이언트)가 보낸 HTTP 요청의 결과입니다. 이러한 유형의 오류는 클라이언트와 관련이 있지만 서버 구성으로 잠재적인 문제를 해결할 수 있는지 확인하기 위해 사용자에게 발생한 오류 코드를 아는 것이 종종 유용합니다.

서버 오류 또는 500에서 599까지의 HTTP 상태 코드는 오류가 발생했음을 인지하거나 요청을 처리할 수 없는 경우 웹 서버에서 반환됩니다.

일반적인 문제 해결 팁

  • 웹 브라우저를 사용하여 웹 서버를 테스트하는 경우 서버 변경 후 브라우저 새로고침
  • 서버가 요청을 처리하는 방법에 대한 자세한 내용은 서버 로그를 확인하십시오. 예를 들어 Apache 또는 Nginx와 같은 웹 서버는 관련 정보를 검색할 수 있는 access.logerror.log라는 두 개의 파일을 생성합니다.
  • HTTP 상태 코드 정의는 요청을 처리하는 애플리케이션에 의해 구현되는 표준의 일부라는 점을 명심하십시오. 즉, 반환되는 실제 상태 코드는 서버 소프트웨어가 특정 오류를 처리하는 방법에 따라 달라집니다. 이 가이드는 일반적으로 올바른 방향을 알려줍니다.

이제 HTTP 상태 코드에 대해 대략적으로 이해했으므로 일반적으로 발생하는 오류를 살펴보겠습니다.

400 잘못된 요청

400 상태 코드 또는 잘못된 요청 오류는 서버로 전송된 HTTP 요청에 잘못된 구문이 있음을 의미합니다.

다음은 400 잘못된 요청 오류가 발생할 수 있는 몇 가지 예입니다.

  • 사이트와 연결된 사용자의 쿠키가 손상되었습니다. 브라우저의 캐시와 쿠키를 지우면 이 문제를 해결할 수 있습니다.
  • 잘못된 브라우저로 인한 잘못된 형식의 요청
  • 수동으로 HTTP 요청을 구성할 때 사람의 실수로 인한 잘못된 요청(예: curl을 잘못 사용)

401 무단

401 상태 코드 또는 권한 없음 오류는 리소스에 액세스하려는 사용자가 인증되지 않았거나 올바르게 인증되지 않았음을 의미합니다. 이는 사용자가 보호된 리소스를 볼 수 있도록 자격 증명을 제공해야 함을 의미합니다.

401 Unauthorized 오류가 반환되는 예제 시나리오는 사용자가 이 Nginx 자습서에서와 같이 HTTP 인증으로 보호되는 리소스에 액세스하려고 시도하는 경우입니다. 이 경우 사용자는 유효한 사용자 이름과 암호(.htpasswd 파일에 있는 암호)를 웹 서버에 제공할 때까지 401 응답 코드를 받게 됩니다.

403 금지

403 상태 코드 또는 Forbidden 오류는 사용자가 유효한 요청을 했지만 요청된 리소스에 액세스할 수 있는 권한이 없기 때문에 서버가 요청 서비스를 거부하고 있음을 의미합니다. 예기치 않게 403 오류가 발생하는 경우 여기에 설명된 몇 가지 일반적인 원인이 있습니다.

파일 권한

403 오류는 일반적으로 웹 서버 프로세스를 실행 중인 사용자에게 액세스 중인 파일을 읽을 수 있는 충분한 권한이 없을 때 발생합니다.

403 오류 문제 해결의 예를 제공하려면 다음 상황을 가정합니다.

  • 사용자가 http://example.com/index.html
  • 에서 웹 서버의 인덱스 파일에 액세스하려고 합니다.\n
  • 웹 서버 작업자 프로세스는 www-data 사용자가 소유합니다
  • 서버에서 색인 파일은 /usr/share/nginx/html/index.html
  • 에 있습니다.

사용자에게 403 Forbidden 오류가 표시되는 경우 www-data 사용자에게 파일을 읽을 수 있는 충분한 권한이 있는지 확인하십시오. 일반적으로 이는 파일의 기타 권한읽기로 설정되어야 함을 의미합니다. 이를 확인하는 방법에는 여러 가지가 있지만 이 경우 다음 명령이 작동합니다.

  1. sudo chmod o=r /usr/share/nginx/html/index.html

.htaccess

종종 의도적으로 403 오류가 발생하는 또 다른 잠재적인 원인은 .htaccess 파일을 사용하는 것입니다. .htaccess 파일은 예를 들어 특정 IP 주소 또는 범위에 대한 특정 리소스의 액세스를 거부하는 데 사용할 수 있습니다.

사용자에게 예기치 않게 403 Forbidden 오류가 표시되는 경우 .htaccess 설정이 원인이 아닌지 확인하세요.

인덱스 파일이 존재하지 않습니다

사용자가 기본 색인 파일이 없는 디렉토리에 액세스하려고 하고 디렉토리 목록이 활성화되지 않은 경우 웹 서버는 403 Forbidden 오류를 반환합니다. 예를 들어 사용자가 http://example.com/emptydir/에 액세스하려고 하고 서버의 emptydir 디렉토리에 인덱스 파일이 없는 경우 403 상태가 반환됩니다.

디렉토리 목록을 활성화하려면 웹 서버 구성에서 그렇게 할 수 있습니다.

404 찾을 수 없음

404 상태 코드 또는 찾을 수 없음 오류는 사용자가 서버와 통신할 수 있지만 요청된 파일이나 리소스를 찾을 수 없음을 의미합니다.

404 오류는 다양한 상황에서 발생할 수 있습니다. 사용자에게 예기치 않게 404 찾을 수 없음 오류가 표시되는 경우 문제를 해결하는 동안 물어볼 몇 가지 질문은 다음과 같습니다.

  • 사용자를 귀하의 서버 리소스로 안내하는 링크에 오타가 있습니까?
  • 사용자가 잘못된 URL을 입력했습니까?
  • 파일이 서버의 올바른 위치에 있습니까? 리소스가 서버에서 이동 또는 삭제되었습니까?
  • 서버 구성에 올바른 문서 루트 위치가 있습니까?
  • 웹 서버 작업자 프로세스를 소유한 사용자에게 요청된 파일이 있는 디렉토리로 이동할 수 있는 권한이 있습니까? (힌트: 디렉토리에 액세스하려면 읽기 및 실행 권한이 필요합니다.)
  • 자원이 심볼릭 링크로 액세스되고 있습니까? 그렇다면 웹 서버가 심볼릭 링크를 따르도록 구성되었는지 확인하십시오.

500 내부 서버 오류

500 상태 코드 또는 내부 서버 오류는 서버가 알 수 없는 이유로 요청을 처리할 수 없음을 의미합니다. 때때로 이 코드는 더 구체적인 5xx 오류가 더 적절할 때 나타납니다.

이 오류의 가장 일반적인 원인은 서버 구성 오류(예: 형식이 잘못된 .htaccess 파일) 또는 누락된 패키지(예: PHP가 제대로 설치되지 않은 상태에서 PHP 파일 실행 시도)입니다.

502 배드 게이트웨이

502 상태 코드 또는 잘못된 게이트웨이 오류는 서버가 게이트웨이 또는 프록시 서버이고 실제로 요청을 이행해야 하는 백엔드 서버로부터 유효한 응답을 받지 못하고 있음을 의미합니다.

문제의 서버가 로드 밸런서와 같은 리버스 프록시 서버인 경우 다음 몇 가지 사항을 확인해야 합니다.

  • 백엔드 서버(HTTP 요청이 전달되는 서버)가 정상입니다.
  • 적절한 백엔드가 지정된 리버스 프록시가 올바르게 구성되었습니다.
  • 백엔드 서버와 리버스 프록시 서버 간의 네트워크 연결이 정상입니다. 서버가 다른 포트에서 통신할 수 있는 경우 방화벽이 서버 간의 트래픽을 허용하는지 확인하십시오.
  • 웹 애플리케이션이 소켓에서 수신 대기하도록 구성된 경우 소켓이 올바른 위치에 있고 적절한 권한이 있는지 확인하십시오.

503 서비스를 사용할 수 없음

503 상태 코드 또는 서비스를 사용할 수 없음 오류는 서버가 과부하 상태이거나 유지 관리 중임을 의미합니다. 이 오류는 서비스가 어느 시점에서 사용 가능해야 함을 의미합니다.

서버가 유지 관리 중이 아닌 경우 서버에 들어오는 모든 요청을 처리하기에 충분한 CPU 또는 메모리 리소스가 없거나 더 많은 사용자, 스레드 또는 프로세스를 허용하도록 웹 서버를 구성해야 함을 나타낼 수 있습니다.

504 게이트웨이 시간 초과

504 상태 코드 또는 Gateway Timeout 오류는 서버가 게이트웨이 또는 프록시 서버이고 허용된 시간 내에 백엔드 서버로부터 응답을 받지 못하고 있음을 의미합니다.

이는 일반적으로 다음과 같은 상황에서 발생합니다.

  • 서버 간의 네트워크 연결 상태가 좋지 않습니다.
  • 성능 저하로 인해 요청을 이행하는 백엔드 서버가 너무 느립니다.
  • 게이트웨이 또는 프록시 서버의 시간 초과 기간이 너무 짧습니다.

결론

이제 가장 일반적인 HTTP 오류 코드와 해당 코드에 대한 일반적인 솔루션에 대해 잘 알고 있으므로 웹 서버 또는 애플리케이션의 문제를 해결하기 위한 좋은 기반이 있어야 합니다.

이 안내서에 언급되지 않은 오류 코드가 발생하거나 설명된 오류에 대한 다른 해결책을 알고 있는 경우 의견에서 자유롭게 논의하십시오.