Nginx에서 발생한 알 수 없는 내부 서버 오류(500)를 해결하는 방법은 무엇입니까?

Nginx에서 발생한 알 수 없는 내부 서버 오류(500)를 해결하는 방법은 무엇입니까?

Nginx에서 500 오류가 발생하여 미치게 되었습니다. 먼저, 서버 블록이 포함된 personalsite.conf아카이브 가 있습니다 ./etc/nginx/conf.d/

이것은 내 서버 블록 구성입니다.

server {
    listen       80;
    server_name  personalsite.me;

    charset UTF-8;
    access_log  /var/log/nginx/personalsite.access.log  main;
    error_log /var/log/nginx/personalsite.error.log;

    root   /usr/share/nginx/html/personalsite;
    index index.php index.html index.htm;

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html/;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

또한 nginx 사용자에게는 적절한 권한이 할당되었습니다 /usr/share/nginx/html/personalsite/.

문제는 내가 탐색하려고 할 때 Nginx가 500 오류를 표시한다는 것입니다. 재미있는 점은 브라우저가 공백으로 바뀌기 때문에 personalsite.me확인하고 보았기 때문에 이것을 알고 있다는 것입니다 . personalsite.access.log알 수 없는 이유로 Nginx는 500 오류 페이지를 표시할 수 없습니다. 보시다시피 이 페이지는 서버 블록에 올바르게 선언되어 있습니다.

또 다른 이상한 점은 personalsite.error.log비어 있고 아무것도 기록되지 않는다는 것입니다.

또한 내 프로필에서 도메인 이름과 해당 IP를 요청했습니다 /etc/hosts. 그래서 저는 여기서 무슨 일이 일어나고 있는지 정말로 모릅니다.

모든 것이 Digital Ocean VPS에서 CentOS 7을 실행합니다.

답변1

대부분의 오류는 Nigix 설정 중 잘못된 구성으로 인해 발생합니다. 파일( /etc/php-fpm.d/www.conf)을 확인해 보시기 바랍니다.

vi /etc/php-fpm.d/www.conf

Listen 매개변수를 지정하는 행을 찾아 다음과 같이 변경합니다.

listen = /var/run/php-fpm/php-fpm.sock

listen.owner다음으로, 이를 설정하고 주석 처리를 해제하는 행을 찾으십시오 listen.group. 다음과 같아야 합니다.

listen.owner = nobody
listen.group = nobody

마지막으로 사용자와 그룹을 설정하는 줄을 찾아 해당 값을 "apache"에서 "nginx"로 변경합니다.

user = nginx
group = nginx

그런 다음 저장하고 종료하세요.

/etc/init.d php-fpm restart

답변2

이것은 세계 최고의 답변은 아니지만 500 오류는 모호합니다. 이는 nginx 구성과 관련이 있거나 웹 사이트 콘텐츠와 관련이 있을 수 있습니다. 문제를 재현할 수 있을 때까지 구성을 최소화하고 다시 빌드하십시오.

웹사이트 콘텐츠를 일반 텍스트만 포함된 간단한 index.html로 바꾸세요. 모든 추가 오류 지침과 위치 블록을 생략합니다. 기본 기능을 설정한 후에는 문제를 일으키는 지침을 격리하고 근본 원인을 찾을 때까지 계속해서 테스트하면서 더 이상 무리하지 않고 추가 지침을 추가할 수 있습니다.

답변3

PHP display_errors가 비활성화되면 PHP 오류로 인해 Nginx 500 오류가 반환될 수 있습니다.

php-fpm 로그를 확인해야 합니다. 거기에서 오류를 찾을 수 있을 것이라고 확신합니다. CentOS 7의 경우:

tail -f /var/log/php-fpm/www-error.log

PHP 오류를 표시할 수도 있습니다. /etc/php.ini에서 다음을 변경합니다.

display_errors = Off

도착하다:

display_errors = On

답변4

php-fpm을 사용하려면 /path/php/version/fpm//pool.d/에서 www.conf를 편집해야 합니다.

catch_workers_output = yes

이 수정 없이는 php-fpm이 로그에 기록하지 않습니다.

관련 정보