Nginx?502?bad?gateway錯誤解決的九種方案及原因
前言
502 Bad Gateway 是一種HTTP協(xié)議的服務(wù)器端錯誤狀態(tài)代碼,它表示作為網(wǎng)關(guān)或代理角色的服務(wù)器,從上游服務(wù)器(如tomcat、php-fpm)中接收到的響應(yīng)是無效的。
Gateway (網(wǎng)關(guān))在計算機(jī)網(wǎng)絡(luò)體系中可以指代不同的設(shè)備,502 錯誤通常不是客戶端能夠修復(fù)的,而是需要由途徑的Web服務(wù)器或者代理服務(wù)器對其進(jìn)行修復(fù)。
總結(jié):php-cgi進(jìn)程數(shù)不夠用、php執(zhí)行時間長、或者是php-cgi進(jìn)程死掉,都會出現(xiàn)502錯誤.
502系列錯誤代碼
- HTTP Error 502 Bad Gateway HTTP 錯誤 502 網(wǎng)關(guān)錯誤
- HTTP 502
- 502 Service Temporarily Overloaded 502 服務(wù)暫時超載
- Temporary Error (502) 臨時錯誤 (502)
- 502 Server Error: The server encountered a temporary error and could not - - complete your request 502 服務(wù)器錯誤:服務(wù)器遇到臨時錯誤,無法完成您的請求
- 502 Bad Gateway Nginx 502 網(wǎng)關(guān)壞 Nginx
5XX系列錯誤代碼
- 500 Internal Server ErrorWeb 服務(wù)器遇到遇到阻止其無法完成其任務(wù)(即客戶端請求)的條件時,將顯示此錯誤
- 501 Not Implemented 服務(wù)器無法支持或識別請求方法。 它缺少處理請求的功能,因此它會響應(yīng)此錯誤
- 502 Bad Gateway 服務(wù)器之間發(fā)生了錯誤,充當(dāng)代理或網(wǎng)關(guān)時,您的服務(wù)器在嘗試處理請求時未收到上游服務(wù)器的正確響應(yīng)
- 503 Service Unavailable 由于正在進(jìn)行維護(hù)或服務(wù)器當(dāng)前過載而導(dǎo)致服務(wù)器無法處理請求的臨時情況
- 504 Gateway Timeout 服務(wù)器再次充當(dāng)代理或網(wǎng)關(guān)時,沒有及時從另一個服務(wù)器(例如DNS)獲得響應(yīng),因此它無法處理請求
- 505 HTTP Version Not Supported 當(dāng)您的Web服務(wù)器不能或?qū)⒉恢С衷醋哉埱蟮腍TTP協(xié)議版本時,將發(fā)生他的錯誤。 該錯誤通常包含服務(wù)器為什么不合作的描述
Nginx 502 Bad Gateway 錯誤的原因及解決方法
多數(shù)是后端問題也就是PHP的問題, 簡單的情況可以刷新(不是一般的刷新哦,Ctrl + F5
強(qiáng)制刷新)解決。在php服務(wù)當(dāng)中,有兩個參數(shù)非常的重要:max_requestst
和max_children
,具體的原因必須要查看日志才可以弄明白!
1、檢查PHP基礎(chǔ)設(shè)置
修改/www/server/php/80/etc/php-fpm.conf request_terminate_timeout = 100
,把100
改成5
;
php執(zhí)行超時,修改/usr/local/php/etc/php.ini 將max_execution_time
為300
;
2、FastCGI進(jìn)程是否已經(jīng)啟動
ps aux | grep php
查看是否啟動了php-fpm
服務(wù);
3、FastCGI worker進(jìn)程數(shù)是否不夠
運(yùn)行l(wèi)inux命令:
netstat -anpo | grep “php-cgi” | wc -l
判斷是否接近FastCGI進(jìn)程,接近配置文件中設(shè)置的數(shù)值,表明worker進(jìn)程數(shù)設(shè)置太少;
4、FastCGI執(zhí)行時間過長
PHP程序執(zhí)行時間超過了Nginx等待時間,可以適當(dāng)增加nginx.conf
配置文件中FastCGI
的timeout
時間,根據(jù)實(shí)際情況調(diào)高以下參數(shù)值:
fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300;
5、FastCGI Buffer不夠
nginx和apache一樣,有前端緩沖限制,可以調(diào)整緩沖參數(shù)
fastcgi_buffer_size 32k; fastcgi_buffers 8 32k;
6、FastCGI 緩沖區(qū)設(shè)置過小
首先查找nginx日志文件,目錄/var/log/nginx
,在日志中發(fā)現(xiàn)了如下錯誤:
[error] 15421#0: *16 upstream sent too big header while reading response header from upstream
意思是nginx緩沖區(qū)bug造成,網(wǎng)站頁面占用緩沖區(qū)可能過大。增加緩沖區(qū)徹底解決了Nginx 502 Bad Gateway,方法如下:
http { ... fastcgi_buffers 8 16k; fastcgi_buffer_size 32k; ... }
請根據(jù)服務(wù)器已經(jīng)網(wǎng)站的情況自行增大上述兩個配置項(xiàng)。
7、代理緩沖區(qū)設(shè)置過小(使用了nginx反向代理的情況)
如果header過大,超出了默認(rèn)的1k,就會引發(fā)upstream sent too big header
server { listen 80; server_name *.test.com; location / { ###############添加這3行 proxy_buffer_size 64k; proxy_buffers 32 32k; proxy_busy_buffers_size 128k; ###############添加這3行 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ............ }
8、默認(rèn)php-cgi的進(jìn)程數(shù)設(shè)置過少
在安裝好使用過程中出現(xiàn)502問題,一般是因?yàn)槟J(rèn)php-cgi進(jìn)程是5個,可能因?yàn)閜hpcgi進(jìn)程不夠用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 將其中的max_children
的值適當(dāng)增加。也有可能是max_requests
的值不夠用。需要說明的是這連個配置項(xiàng)占用內(nèi)存很大,請根據(jù)服務(wù)器配置進(jìn)行設(shè)置。否則可能起到反效果。
9、其它原因
如果您上網(wǎng)時在您嘗試訪問的所有網(wǎng)站上都看這個問題,有兩種可能
①你的ISP重大設(shè)備故障/過載
②有問題的內(nèi)部互聯(lián)網(wǎng)連接如您的防火墻無法正常運(yùn)作。
在種情況下,只有您的ISP可以幫助您。在第二種情況下,你需要解決什么,那是阻止你進(jìn)入互聯(lián)網(wǎng)。
如果您只有在部分嘗試訪問的網(wǎng)站中出現(xiàn)此問題,那很可能是一個問題,即這些網(wǎng)站之一,其設(shè)備故障或超載。聯(lián)系你網(wǎng)站的管理員。
總結(jié)
到此這篇關(guān)于Nginx 502 bad gateway錯誤解決的九種方案及原因的文章就介紹到這了,更多相關(guān)Nginx 502 bad gateway錯誤內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Nginx 502 bad gateway和Nginx 504 Gateway Time-out錯誤解決方法 錯誤解決辦法
- 502 bad gateway是什么意思 502 bad gateway錯誤解決方法
- 深入探討:Nginx 502 Bad Gateway錯誤的解決方法
- nginx 502 Bad Gateway 錯誤解決辦法
- Nginx 502 Bad Gateway錯誤常見的4種原因和解決方法
- PHP 502bad gateway原因及解決方案
- Nginx 502 Bad Gateway錯誤原因及解決方案
- nginx服務(wù)器異常502 bad gateway原因排查
- Nginx 502 Bad Gateway錯誤解決詳細(xì)指南與實(shí)例
相關(guān)文章
nginx basic認(rèn)證的實(shí)現(xiàn)示例
auth_basic作為一個認(rèn)證模塊,在apache和nginx中都很常用,本文主要介紹了nginx basic認(rèn)證的實(shí)現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2024-08-08nginx配置PC站手機(jī)站分離實(shí)現(xiàn)重定向
這篇文章主要介紹了nginx配置PC站手機(jī)站分離實(shí)現(xiàn)重定向,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Nginx?504?Gateway?Time-out的兩種最新解決方案
大家在訪問網(wǎng)站的時候通常會遇到502錯誤、404錯誤等,很少會遇到504錯誤,但是在我們?nèi)ピL問大流量或者內(nèi)容數(shù)據(jù)量較多的網(wǎng)站時,打開網(wǎng)頁偶爾就會出現(xiàn)504 gateway time-out,這篇文章主要給大家介紹了關(guān)于Nginx?504?Gateway?Time-out的兩種解決方案,需要的朋友可以參考下2022-08-08詳解nginx實(shí)現(xiàn)ssl反向代理實(shí)戰(zhàn)
本篇文章主要介紹了nginx實(shí)現(xiàn)ssl反向代理實(shí)戰(zhàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01