Nginx 502 bad gateway 오류 해결 방향

2974 단어
사이트 가 열 리 면 Nginx 502 bad gateway 의 오류 가 발생 합 니 다. 이러한 오 류 를 일 으 키 는 원인 은 여러 가지 가 있 습 니 다. 다음은 nginx 에서 흔히 볼 수 있 는 502 오 류 를 분석 합 니 다.
1. nginx 프로필 오류
nginx 에서 php - fpm 를 찾 을 수 없 기 때문에 잘못 보 고 했 습 니 다. 보통 fastcgi 입 니 다.pass 뒤의 경로 설정 이 잘못 되 었 습 니 다. 뒤쪽 은 socket 이나 ip: port 일 수 있 습 니 다.
해결 방안:
[root@bier ~]# vim/usr/local/nginx/conf/vhosts/www.conf
server
{
   listen 80;
   server_name www.222.com;       
   index index.html index.htm index.php;
   root /data/www/;
   location ~ \.php$ {
       include fastcgi_params;
       fastcgi_pass unix:/tmp/www.sock;  //  sock
       #fastcgi_pass 127.0.0.1:8000; 
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
    }
}

문법 이 정상 인지 확인 합 니 다.
[root@bier ~]#/usr/local/nginx/sbin/nginx -t
프로필 다시 불 러 오기
[root@bier ~]# /usr/local/nginx/sbin/nginx-s reload
2, php - fpm 자원 소 진
Nmp 구조 가 phop 을 처리 할 때 nginx 는 백 엔 드 의 phop - fpm 서 비 스 를 직접 호출 합 니 다. nginx 의 요 구 량 이 높 으 면 phop - fpm 에 충분 한 하위 프로 세 스 를 설정 하지 않 았 습 니 다. 그러면 phop - fpm 는 자원 이 다 소모 되 고 nginx 가 phop - fpm 를 찾 지 못 하면 502 오류 가 발생 합 니 다.
해결 방안:
pp - fpm. conf 의 pm. max 를 조정 합 니 다.children 수 치 를 증가 시 킬 수 있 지만 무한 증가 할 수 없습니다. 자원 이 유한 하기 때문에 일반 4G 메모리 기기 가 phop - fpm 와 nginx 를 달리 면 my sql 을 뛰 지 않 으 면 150, 8G 는 300 으로 설정 할 수 있 습 니 다.
[root@bier ~]# vim/usr/local/php/etc/php-fpm.conf
pm = dynamic
pm.max_children = 150
pm.start_servers = 20

php 실행 시간 제한 php - fpm. conf 에 있 는 requestterminate_timeout 설정, phop 프로그램의 bug 로 인해 phop - cgi 가사 가 발생 하 는 것 을 방지 하기 위해 서 입 니 다.
설정 후 php - fpm 다시 시작
[root@bier ~]# /etc/init.d/php-fpm restart
3. phop - fpm. conf 파일 은 nginx 의 주 와 그룹 이 아 닙 니 다.
해결 방안:
nginx 가 그 사용자 가 달 렸 는 지 확인 합 니 다.
[root@bier ~]# ps aux |grep nginx
php - fpm 파일 을 편집 하려 면 이 php - fpm 파일 에 nginx 의 사용자 주 를 설정 해 야 합 니 다. 그룹 과 함께 해 야 502 가 표시 되 지 않 습 니 다.
[root@bier ~]# vim/usr/local/php/etc/php-fpm.conf
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log =/usr/local/php/var/log/php-fpm.log
[www]
listen = /tmp/www.sock
user = php-fpm
group = php-fpm
listen.owner = nobody    //   nginx    
listen.group = nobody    //   nginx    

4. 유량 * * 로 인해 (완전히 * * 로 인해 발생 할 수 있 습 니 다. * * 를 처리 하면 정상적으로 열 립 니 다)
php - cgi 가 실행 중인 지 확인 하기
때로는 사이트 트 래 픽 이 너무 많 거나 다른 원인 으로 인해 phop - cgi 가 직접 다운 되 기 때문에 phop - cgi 가 실행 되 고 있 는 지 확인 해 야 합 니 다.다음 명령 을 실행 합 니 다:
ps -A | grep php5-cgi
실행 되 지 않 으 면 수 동 으로 시작 합 니 다.
/etc/init.d/php_cgi start
5. FastCGI 가 너무 오래 실 행 됨
실제 상황 에 따라 아래 매개 변수 값 을 높이다.
fastcgi_connect_timeout 200;
fastcgi_send_timeout 200;
fastcgi_read_timeout 200;

6. 위의 몇 가지 상황 을 제외 하고 다른 원인 도 있 지만 많 지 않 습 니 다. nginx 의 오류 로 그 를 통 해 조사 할 수 있 습 니 다.
vim /usr/local/nginx/logs/nginx_error.log  이것 도 가장 직관 적 으로 잘못된 정 보 를 찾 을 수 있다.
다음으로 전송:https://blog.51cto.com/chenshoubiao/1841654

좋은 웹페이지 즐겨찾기