Nginx 502 Bad Gateway는 요청한 PHP-CGI가 실행되었으나 어떤 이유로(보통 리소스 읽기 문제) 완료되지 않았으며 PHP-CGI 프로세스가 종료되었음을 의미합니다. 502 Bad Gateway는 php-fpm.conf 설정과 관련이 있습니다.
일반적인 이유는 php-cgi 프로세스 수가 충분하지 않거나, php 실행 시간이 길거나(mysql이 느림), php-cgi 프로세스가 종료되어 502 오류가 발생하는 것일 수 있습니다.
1. 설치된 환경에서 일정시간 실행 후 502 문제가 발생합니다. 일반적으로 기본 php-cgi 프로세스가 5개이기 때문입니다. phpcgi 프로세스가 부족하여 발생할 수 있습니다. usr/local/php/etc /php-fpm.conf max_children 값을 적절하게 늘리십시오.
2. PHP 실행 시간 초과, /usr/local/php/etc/php.ini를 수정하여 max_execution_time을 300으로 변경하세요
3 디스크 공간이 부족하면 # df -h 명령을 사용하여 디스크 사용량을 확인할 수 있습니다
4. php -cgi 프로세스가 종료되었습니다.
일반적인 문제 해결 방법은 다음과 같습니다.
1. php fastcgi
# netstat -anop | grep php-cgi | wc -l # netstat -anpo | grep php-fpm | wc -l
디스플레이가 5
2인 경우 프로세스 수(max_children 값)를 확인하세요
# ps aux | grep php-fpm 观察fastcgi/php-fpm进程数,假如使用的进程数等于或高于5个,说明需要增加。
3. /usr/local/ 조정 php/etc/php-fpm.conf
pm.max_children = 5 request_terminate_timeout = 60
max_children의 관련 설정은 최대 5개의 프로세스이며 프로세스당 메모리는 20MB, 최대 100MB입니다. 그것은 1분입니다. max_children이 증가하면 더 많은 php-cgi 프로세스가 빠르게 처리되고 대기 중인 요청이 줄어듭니다.
그러나 max_children 설정도 서버 성능에 따라 설정해야 합니다. 일반적으로 서버의 각 php-cgi가 소비하는 메모리는 일반적인 상황에서 약 20M입니다. 실제 결정은 서버용으로 구입한 메모리에 따라 다릅니다.
request_terminate_timeout의 실행 시간은 60초이며, request_terminate_timeout 값은 서버 성능에 따라 설정될 수 있습니다. 일반적으로 성능이 좋을수록 20분에서 30분 사이에서 더 높게 설정할 수 있습니다.
4. 일부 PHP 프로그램의 실행 시간은 Nginx의 대기 시간을 초과합니다. nginx.conf 구성 파일에서 FastCGI 시간 초과 시간을 적절하게 늘릴 수 있습니다. 예:
http { ...... fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; ......}
더 많은 Nginx 관련 기술 문서를 참조하세요. Nginx 튜토리얼 칼럼에서 배워보세요!
위 내용은 nginx 502 불량 게이트웨이 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!