Nginx 502 Bad Gateway 解決方法


proxy_next_upstream error timeout invalid_header http_500 http_503;
或者嘗試設置:
large_client_header_buffers 4 32k;

1查看fastcGI進程 ps -ef|grep 'php-fpm' 若沒啟動,啟動

2系統文件打開數 

ulimit -n 4096
查看所有進程的文件打開數
lsof |wc -l
查看某個進程打開的文件數
lsof -p pid |wc -l

一、fastcgi緩沖區設置過小 

  http {
    ...
    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
    ...
  }

二、代理緩沖區設置過小
如果你使用的是nginx反向代理,如果header過大,超出了默認的1k,就會引發上述的upstream sent too big header (說白了就是nginx把外部請求給后端處理,后端返回的header太大,nginx處理不過來就會導致502。

server {
listen 80;
server_name *.lxy.me;

location / {

###############
proxy_buffer_size 64k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
###############
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
............
}

三、默認php-cgi的進程數設置過少
在安裝好使用過程中出現502問題,一般是因為默認php-cgi進程是5個,可能因為phpcgi進程不夠用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 將其中的max_children值適當增加。也有可能是max_requests值不夠用。需要說明的是這連個配置項占用內存很大,請根據服務器配置進行設置。否則可能起到反效果。

四、php執行超時
php執行超時,修改/usr/local/php/etc/php.ini 將max_execution_time 改為300

五、nginx等待時間超時
部分PHP程序的執行時間超過了Nginx的等待時間,可以適當增加nginx.conf配置文件中FastCGI的timeout時間

http {
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
......
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM