nginx中502/503/504的區(qū)別

502 - Bad Gateway

官方解釋:作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請(qǐng)求時(shí),從上游服務(wù)器接收到無效的響應(yīng)。

  1. 那么什么時(shí)候會(huì)出現(xiàn)上面的情況呢?
  • php-fpm沒有啟動(dòng),nginx無法將請(qǐng)求交給php-fpm
  • php-fpm運(yùn)行腳本超時(shí),php-fpm終止了腳本的執(zhí)行和執(zhí)行腳本的Worker進(jìn)程,nginx發(fā)現(xiàn)自己與php-fpm的連接斷開
  1. nginx和php-fpm 報(bào)告502的通信過程
    nginx 在這里充當(dāng)?shù)氖欠聪虼矸?wù)器的角色,是把 http 協(xié)議請(qǐng)求轉(zhuǎn)成 fastcgi 協(xié)議的請(qǐng)求,通過 fastcgi_pass 指令傳遞給 php-fpm 進(jìn)程,當(dāng) php-fpm 進(jìn)程響應(yīng)的內(nèi)容是 nginx 無法理解的響應(yīng),就會(huì)返回 502 bad gateway。

  2. 502的問題如何解決

  • 檢查php-fpm是否啟動(dòng)
  • 在 php.ini和 php-fpm.conf中分別有這樣兩個(gè)配置項(xiàng):max_execution_time和 request_terminate_timeout。
  • 這兩項(xiàng)都是用來配置一個(gè) PHP 腳本的最大執(zhí)行時(shí)間的。當(dāng)超過這個(gè)時(shí)間時(shí),PHP-FPM不只會(huì)終止腳本的執(zhí)行,還會(huì)終止執(zhí)行腳本的Worker進(jìn)程。所以Nginx會(huì)發(fā)現(xiàn)與自己通信的連接斷掉了,就會(huì)返回給客戶端502錯(cuò)誤。
  • 只需將這兩項(xiàng)的值調(diào)大一些就可以讓PHP腳本不會(huì)因?yàn)閳?zhí)行時(shí)間長(zhǎng)而被終止了。request_terminate_timeout 可以覆蓋 max_execution_time,所以如果不想改全局的php.ini,那只改PHP-FPM的配置就可以了。

503 - Service Unavailable

服務(wù)器目前無法使用(由于超載或停機(jī)維護(hù))。通常,這只是暫時(shí)狀態(tài)。(服務(wù)不可用)。一個(gè) http 請(qǐng)求占用一個(gè) php-fpm 進(jìn)程,瞬時(shí)請(qǐng)求量過大時(shí),沒有足夠的 php-fpm 進(jìn)程去處理請(qǐng)求,就會(huì)返回 503 service unavailable。

或者,nginx 配置了頻率限制,而 client 端又超過了配置的限制后就會(huì)收到 503 的響應(yīng)。

504 Gateway Time-out

  1. 504錯(cuò)誤的產(chǎn)生情況
  • 504 即 nginx 超過了自己設(shè)置的超時(shí)時(shí)間,不等待 php-fpm 的返回結(jié)果,nginx 的 fastcgi 模塊有一個(gè) fastcgi_read_timeout 配置,它表示從 FastCGI server 獲取數(shù)據(jù)的超時(shí)時(shí)間。如果超過這個(gè)配置,直接給客戶端返回 504 錯(cuò)誤。但是此時(shí) php-fpm 依然還在處理請(qǐng)求(在沒有超出自己的超時(shí)時(shí)間的情況下)

  • 網(wǎng)關(guān)超時(shí),客戶端所發(fā)出的請(qǐng)求沒有到達(dá)網(wǎng)關(guān),在限定時(shí)間內(nèi)沒有得到php-fpm,或者完成php-fpm的傳輸數(shù)據(jù)的工作而超時(shí) 。比方說:即nginx的worker去php-fpm進(jìn)程池去處理,但是沒有fpm進(jìn)程可以使用了,等啊等,還是沒有,返回504。

  1. 解決辦法
    *可以將nginx配置中的fastcgi_read_timeout 選項(xiàng)超時(shí)時(shí)間調(diào)大
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容