Nginx 500錯誤總結

2021-08-28 23:06:38 字數 2653 閱讀 9720

500(伺服器內部錯誤)

伺服器遇到錯誤,無法完成請求

501(尚未實施)

伺服器不具備完成請求的功能。例如,當伺服器無法識別請求方法時,伺服器可能會返回此**

502(錯誤閘道器)

伺服器作為閘道器或**,從上游伺服器收到了無效的響應

503(服務不可用)

目前無法使用伺服器(由於超載或進行停機維護)。通常,這只是一種暫時的狀態

504(閘道器超時)

伺服器作為閘道器或**,未及時從上游伺服器接收請求

505(http 版本不受支援)

伺服器不支援請求中所使用的 http 協議版本

nginx 500錯誤(internal server error 內部伺服器錯誤):500錯誤指的是伺服器內部錯誤,也就是伺服器遇到意外情況,而無法履行請求。

web指令碼錯誤,如php語法錯誤,lua語法錯誤等。

訪問量大的時候,由於系統資源限制,而不能開啟過多的檔案

一般分析思路:

檢視nginx error log ,檢視php error log

如果是too many open files,修改nginx的worker_rlimit_nofile引數,使用ulimit檢視系統開啟檔案限制,修改/etc/security/limits.conf

如果是指令碼的問題,則需要修復指令碼錯誤,並優化**

各種優化都做好,還是出現too many open files,那就要考慮做負載均衡,把流量分散到不同伺服器上去了。

錯誤原因總結:

硬碟空間滿了

使用 df -k 檢視硬碟空間是否滿了。清理硬碟空間就可以解決500錯誤。nginx如果開啟了access log,在不需要的情況下,最好關閉access log。access log會占用大量硬碟空間。

nginx配置檔案錯誤

這裡不是指語法錯誤,nginx如果配置檔案有語法錯誤,啟動的時候就會提示。當配置rewrite的時候,有些規則處理不當會出現500錯誤,請仔細檢查自己的rewrite規則。如果配置檔案裡有些變數設定不當,也會出現500錯誤,比如引用了乙個沒有值的變數。

如果上面的問題都不存在可能是模擬的併發數太多了,需要調整一下nginx.conf的併發設定數

解決方法是:

開啟/etc/security/limits.conf檔案,加上兩句

複製****如下:

soft nofile 65535

hard nofile 65535

開啟/etc/nginx/nginx.conf

在worker_processes的下面增加一行

複製****如下:

worker_rlimit_nofile 65535;

重新啟動nginx,重新載入設定

複製****如下:

kill -9 `ps -ef | grep php | grep -v grep | awk ''`

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -c 100 -u www-data -f /usr/bin/php-cgi

killall -hup nginx

重啟後再看nginx的錯誤日誌,也沒有發現500報錯的情況了。

有可能是資料庫問題我的在nginx日誌php日誌都沒有發現什麼問題, 最後發現資料庫訪問不了,修正後問題解決。

502 bad gateway:作為閘道器或者**工作的伺服器嘗試執行請求時,從上游伺服器接收到無效的響應。

原因分析

將請求提交給閘道器如php-fpm執行,但是由於某些原因沒有執行完畢導致php-fpm程序終止執行。說到此,這個問題就很明了了,與閘道器服務如php-fpm的配置有關了。

分析思路:

php-fpm.conf配置檔案中有兩個引數就需要你考慮到,分別是max_children和request_terminate_timeout。

max_children最大子程序數,在高併發請求下,達到php-fpm最大響應數,後續的請求就會出現502錯誤的。可以通過netstat命令來檢視當前連線數。

request_terminate_timeout設定單個請求的超時終止時間。還應該注意到php.ini中的max_execution_time引數。當請求終止時,也會出現502錯誤的。

當積累了大量的php請求,你重啟php-fpm釋放資源,但一兩分鐘不到,502又再次呈現,這是什麼原因導致的呢? 這時還應該考慮到資料庫,檢視下資料庫程序是否有大量的locked程序,資料庫死鎖導致超時,前端終止了繼續請求,但是sql語句還在等待釋放鎖,這時就要重啟資料庫服務了或kill掉死鎖sql程序了。

504錯誤一般是與nginx.conf配置有關了。主要與以下幾個引數有關:fastcgi_connect_timeout、fastcgi_send_timeout、fastcgi_read_timeout、fastcgi_buffer_size、fastcgi_buffers、fastcgi_busy_buffers_size、fastcgi_temp_file_write_size、fastcgi_intercept_errors。特別是前三個超時時間。如果fastcgi緩衝區太小會導致fastcgi程序被掛起從而演變為504錯誤。

Nginx 500錯誤總結

nginx 500錯誤總結 500 伺服器內部錯誤 伺服器遇到錯誤,無法完成請求。501 尚未實施 伺服器不具備完成請求的功能。例如,當伺服器無法識別請求方法時,伺服器可能會返回此 502 錯誤閘道器 伺服器作為閘道器或 從上游伺服器收到了無效的響應。503 服務不可用 目前無法使用伺服器 由於超載...

Nginx 500錯誤總結

nginx 500錯誤總結 500 伺服器內部錯誤 伺服器遇到錯誤,無法完成請求。501 尚未實施 伺服器不具備完成請求的功能。例如,當伺服器無法識別請求方法時,伺服器可能會返回此 502 錯誤閘道器 伺服器作為閘道器或 從上游伺服器收到了無效的響應。503 服務不可用 目前無法使用伺服器 由於超載...

nginx 伺服器大檔案上傳時500錯誤

採用nginx作反向 出現了乙個詭異的問題,小檔案可以提交,大檔案會報500內部錯誤。這個是什麼原因導致的呢?查wiki可知,上傳檔案大小相關的有三個配置 client body buffer size 配置請求體快取區大小,不配的話,client body temp path 設定臨時檔案存放路徑...