알 수없는 내부 서버 오류 (500)를 수정하는 방법 Nginx가 나에게 제공합니까?

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; } } 

Plus nginx 사용자에게는 /usr/share/nginx/html/personalsite/에 서명 된 적절한 권한이 있습니다.

문제는 Nginx가

, 그리고 재미있는 점은 personalsite.access.log를 확인하고 확인했기 때문에 브라우저가 공백이 되었기 때문에 알 수 있다는 것입니다. Nginx는 500 오류 페이지를 표시 할 수 없습니다. 보시다시피 서버 블록에 올바르게 선언되어 있습니다.

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

또한 해당 도메인이 내 /etc/hosts 아카이브에 IP로 선언되어 있습니다. 그래서 여기서 무슨 일이 일어나고 있는지 전혀 모릅니다.

p>

모든 것이 r Digital Ocean VPS를 통해 CentOS 7 실행.

답변

Nigix 설정시 잘못된 구성으로 인해 대부분의 오류가 발생합니다. 파일 (/etc/php-fpm.d/www.conf)을 확인하는 것이 좋습니다.

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

수신 매개 변수를 지정하는 줄을 찾고 다음과 같이 변경합니다.

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

다음으로 listen.ownerlisten.group 주석을 제거하십시오. 다음과 같이 표시되어야합니다.

listen.owner = nobody listen.group = nobody 

마지막으로 사용자 및 그룹을 설정하는 줄을 찾고 값을 “apache”에서 “nginx”로 변경합니다.

user = nginx group = nginx 

그런 다음 저장하고 종료

/etc/init.d php-fpm restart 

답변

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

사이트 콘텐츠를 일반 텍스트가 포함 된 간단한 index.html로 바꿉니다. 모든 추가 오류 지시문과 위치 블록은 제외하십시오. 기본 기능을 설정 한 후에는 문제를 일으키는 지시문을 격리하고 거기에서 근본 원인을 찾을 수있을 때까지 진행하면서 테스트하면서 다른 지시문을 추가 할 수 있습니다.

댓글

  • 실제로 Nginx가 괜찮다는 것을 이해하는 데 도움이되었습니다. 문제는 실행하려는 웹 사이트에 ' 있습니다. 모든 콘텐츠를 phpinfo.php 파일로 교체했는데 완벽하게 실행됩니다. 실행하려는 웹 사이트 '는 Yii Framework를 사용합니다. 공식 위키를 확인한 결과 " 소프트웨어는 nginx, php-fpm (php5-fpm)입니다. 성능을 위해 '는 IP : PORT를 통해 액세스하는 대신 SOCKET 모드에서 php-fpm을 실행하는 것이 좋습니다. 이것이 바로 " ' Nginx를 그대로 사용하고 있습니다. 그래서 500 오류가 발생하고 error.log에 기록하지 않는 이유를 모르겠습니다.

Answer

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 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다