10 아파치 내부 서버 오류에 대 한 드문 원인 및 그 문제를 해결 하는 방법

웹 마 스 터의 메모리 사용량을 줄일 수 있습니다. 많은 낮은 소통량 웹사이트를 달리는 선호한 방법 이다.

하지만 컴퓨터 컴퓨터 모드는 권한 및 파일 인코딩과 같은 것들에 매우 민감하여 500 내부 서버 오류가 발생합니다.

내부 서버 오류-오류 표시

웹 호스트에 대한 지원 엔지니어로서의 역할에서 우리는 이 오류에 대한 광범위한 원인을 보았습니다.

몇 가지 일반적인 원인과 수정 사항은 다음과 같습니다:

  • 잘못된 파일 또는 폴더 권한–스크립트 파일 및 디렉터리에는 정확히 755 개의 권한이 있어야 합니다. 일부 서버에서는 디렉터리에 750 권한이 필요할 수 있습니다.
  • 잘못된 소유권(사용자&그룹 문제)–아파치의 구성에 따라 파일의 소유권을”사용자:아파치 사용자”또는”사용자:사용자”로 설정해야 합니다.
  • 잘못된 인코딩–바이너리 모드로 업로드된 파일은 실행이 실패하고 아스키로 다시 업로드해야 합니다.

오류 500 문제의 거의 80%가 이러한 수정으로 해결됩니다.

이 문서는 찾기 어려운 원인의 나머지 20%에 관한 것입니다.

내부 서버 오류

500 내부 서버 오류는 웹 서버의 방식으로”페이지를 표시하려고 할 때 뭔가 잘못되었습니다. 확실하지 무엇.”

이 권한이나 소유권 문제가 아닌 경우,그것은 방화벽 블록&파일 시스템 오류에 응용 프로그램 버그&아파치 잘못 구성에서 아무것도 될 수 있습니다.

여기에 우리가 작업의 과정에서 본 적이 상위 10 드문 문제입니다.

누락 된 모듈

웹 응용 프로그램은 특정 기능에 대 한 많은 또는 펄”모듈”에 의존 합니다.

이러한 모듈 중 일부는 표준 서버 설정의 일부이지만 많은 모듈은 그렇지 않습니다.

마이그레이션 후 또는 새 웹 사이트 설정 중에 필요한 모든 모듈이 없기 때문에 스크립트가 실패하는 경우가 많습니다.

오류 로그에”정의되지 않은”함수가 있거나”메서드”가 존재하지 않는다고 표시됩니다.

이 문제를 해결하기 위해,우리는 응용 프로그램 요구 사항 사양을 통해 이동,모든 누락 된 모듈을 설치합니다.네트워크 시간 제한(원격 스크립트 등))

일부 웹 앱은 원격 서버에서 데이터를 가져옵니다. 날씨 데이터).

어떤 이유로 원격 서버에 대한 이 연결이 중단되면 웹 앱은 잠시 기다린 다음 시간 제한 오류를 표시합니다.

아파치는 이 상태를 오류 500 으로 보고한다.

이 문제는 로그 항목을 남기지 않을 수 있으므로 문제를 해결하기 어려울 수 있습니다.

우리는 긴 보류 나가는 연결을 검사하여 시간 제한 문제를 감지하고,아웃 바운드 연결을 필요로하는 응용 프로그램 기능을 비활성화하여 해결합니다.

이전 프로그램(컴파일러)경로

모든 응용 프로그램의 첫 번째 줄(셰방이라고 함)에는 실행해야 하는 프로그램의 경로가 포함되어 있습니다.

예를 들면. 펄 스크립트에는 다음 경로가 있습니다:

#!/usr/bin/perl

그러나이 경로는 운영 체제 공급 업체 및 사용자 정의 컴파일 설정에 따라 다를 수 있습니다.

따라서 스크립트는 특정 위치에서 프로그램 파일을 찾고 찾을 수 없으면 스크립트에 오류 500 이 표시됩니다.

두 가지 효과적인 방법은 다음과 같습니다:

  • 서버 환경에 정의된 경로 사용-모든 프로그램의 경로는 서버의”환경”변수에 저장됩니다. 그래서,우리는 다음과 같이 환경을 호출하여 첫 번째 줄을 변경합니다:
    • #!/usr/bin/env perl
    • 이렇게 하면 펄이 어디에 설치되든 스크립트에서 경로를 사용할 수 있게 됩니다.
  • 아파치 설정에서 프로그램 경로 정의-아파치의”핸들러 추가”및”액션”지시문을 사용하여 올바른 프로그램으로 모든 파일을 실행하십시오. 예를 들어. 설치 방법은 다음과 같습니다:
    • AddHandler application/x-httpd-php5 php
    • Action application/x-httpd-php5 /local-bin/php-cgi

응용 프로그램 코드의 오류

웹 사이트 소유자는”;”를 삭제하거나 응용 프로그램 또는 구성 파일을 편집하는 동안 길잃은 문자를 삽입하는 것과 같은 작은 오류를 만들 수 있습니다.

이로 인해 응용 프로그램이 실행되지 않지만 아파치는 비밀스러운”내부 서버 오류”메시지 만 뱉어 낼 것입니다.

로그 파일을 분석하여 이러한 문제를 감지하고 코드 오류를 수정하거나 오류를 일으키는 플러그인/애드온/테마를 비활성화하여 해결합니다.

잘못된 모듈 경로가있는 이전 구성 파일

웹 사이트는 종종 서버의 환경 및 프로그램 경로에 맞게 사용자 정의됩니다.

사이트가 마이그레이션되면 해당 구성 파일에 새 서버와 호환되지 않는 이전 경로가 포함됩니다.

웹 응용 프로그램이 사용자 지정 구성 파일을 사용하는 경우를 보았습니다.라이브러리 함수를로드합니다. 새 서버에서 경로가 변경되면 실패합니다.

이러한 경우 하드 코딩 된 프로그램 경로를 제거하고 대신 환경 변수를 사용하여 프로그램 위치를 자동으로 얻습니다.

보안 제한 사항(웹 애플리케이션 방화벽,셀리눅스 등)

요즘 대부분의 서버에는 다음과 같은 웹 응용 프로그램 방화벽이 있습니다.

이러한 방화벽은 페이지 요청을 공격으로 해석하는 경우 오류 500 을 유발할 수 있습니다.

예를 들면. 우리는 외부 파일 호출이 모드 보안에 의해 원격 파일 포함 공격으로 해석 되었기 때문에 웹 앱이 실패하는 것을 보았습니다.

이 경우 사용자 지정 방화벽 제외 규칙을 만들어 앱이 더 이상 차단되지 않도록 하고 서버 보안은 영향을 받지 않습니다.

셀리눅스 설정을”적용”에서”허용”으로 변경하면 이 오류를 수정하는 데도 도움이 되었습니다.

파티션에 대한 실행 제한 없음

이를 위해”실행”권한이라는 것이 필요합니다.

이”실행”권한은 맬웨어 실행을 방지하기 위해”/백업”과 같은 공용 액세스 파티션 및 데이터 저장소 파티션에 대해 해제됩니다.

웹 사이트 홈에 대해 이”실행”비트가 해제되어 스크립트 실행이 실패하는 경우를 보았습니다.

:

  • # mount -o remount,exec /home

아파치&.이 문제를 해결하려면 다음을 수행하십시오.)

아파치는 어떤 디렉토리에 스크립트가 포함되어 있는지 알아야 한다.

는 명령어를 사용하여 표시됩니다.

예를 들면. 아파치는 다음과 같이 구성되어야 한다:

<Directory /path/to/cgi-bin>
Options +ExecCGI
</Directory>

일부 서버에서는”실행 프로그램”이 아파치 컨피그레이션 파일 또는 아파치 컨피그레이션 파일의 잘못된 구성으로 인해 비활성화된 것을 보았습니다.부모 디렉토리에 있는 액세스.

마찬가지로,우리는 관련 지시어를 보았다.때문에 효과가 없게된다.아파치 설정에서”허용 오버라이드”지시문을 통해 활성화되지 않았습니다.

이 모든 것이 스크립트 실행에 실패하고 결과적으로 오류 500 이 발생할 수 있습니다.

홈 디렉토리

에 대한 잘못된 사용 권한은 일반적으로 홈 디렉토리 내에 배치됩니다. 예를 들어. 다음 예제에서는 다음과 같이 설명합니다:

/home/username/public_html/cgi-bin/

많은 웹마스터는 컴퓨터 컴퓨터 통신망 전화번호부 및 웹 신청 전화번호부의 허가를 755 에 바꾸기 위하여 돌보아주고,그러나 가정 전화번호부의 허가를 검사한것을 잊는다.

일부 아파치 구성(예. 홈 디렉토리는 또한 755 권한이 있어야합니다. 그 이외의 다른 것(예. 777),스크립트 실행이 실패합니다.

따라서 스크립트 파일 사용 권한과 함께 가장 먼저 확인하는 것 중 하나는 파일 경로에있는 모든 디렉토리의 사용 권한을 확인하는 것입니다.

우리는 스크립트가 오류없이 실행되도록하기 위해 모든 것을 올바르게 설정했습니다.

파일 경로

를 중단하는 관련 오류 일부 공유 서버에서는 각 사용자를 투옥 환경에 제한하여 보안이 적용됩니다.

이렇게 하면 한 사용자가 다른 사용자의 파일에 액세스할 수 없습니다.

그러나 이러한 환경은 프로그램 파일에 대한 소프트 링크를 끊을 수 있습니다.

예를 들면. 만약 프로그램이”/선택//빈/”에 저장되어 있고”//”에서 링크되어 있다면,그 참조가 깨질 수 있습니다.

이것은 매우 드문 경우이며 소프트 링크 대신 올바른 경로를 사용하도록 서버(또는 사이트)를 다시 구성하여 수정합니다.

답글 남기기

이메일 주소는 공개되지 않습니다.