1. 程式人生 > >Nginx 500錯誤總結

Nginx 500錯誤總結

響應 lpad 文件 增加 url 重新啟動 狀態 查看 暫時

Nginx 500錯誤總結
500(服務器內部錯誤) 服務器遇到錯誤,無法完成請求。
501(尚未實施) 服務器不具備完成請求的功能。例如,當服務器無法識別請求方法時,服務器可能會返回此代碼。
502(錯誤網關) 服務器作為網關或代理,從上遊服務器收到了無效的響應。
503(服務不可用) 目前無法使用服務器(由於超載或進行停機維護)。通常,這只是一種暫時的狀態。
504(網關超時) 服務器作為網關或代理,未及時從上遊服務器接收請求。
505(HTTP 版本不受支持) 服務器不支持請求中所使用的 HTTP 協議版本。

Nginx 500錯誤(Internal Server Error 內部服務器錯誤):500錯誤指的是服務器內部錯誤,也就是服務器遇到意外情況,而無法履行請求。

500錯誤一般有幾種情況:

1. web腳本錯誤,如php語法錯誤,lua語法錯誤等。

2. 訪問量大的時候,由於系統資源限制,而不能打開過多的文件

一般分析思路:

(1)查看nginx error log ,查看php error log

(2)如果是too many open files,修改nginx的worker_rlimit_nofile參數,使用ulimit查看系統打開文件限制,修改/etc/security/limits.conf

(3)如果是腳本的問題,則需要修復腳本錯誤,並優化代碼

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

錯誤原因總結:

1、硬盤空間滿了

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

2、nginx配置文件錯誤

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

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

解決方法是:

1 打開/etc/security/limits.conf文件,加上兩句

復制代碼代碼如下: * soft nofile 65535
* hard nofile 65535


2 打開/etc/nginx/nginx.conf
在worker_processes的下面增加一行

復制代碼代碼如下: worker_rlimit_nofile 65535;


3 重新啟動nginx,重新載入設置

復制代碼代碼如下: kill -9 `ps -ef | grep php | grep -v grep | awk ‘{print $2}‘`
/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報錯的情況了。


4、有可能是數據庫問題我的在nginx日誌php日誌都沒有發現什麽問題, 最後發現數據庫訪問不了,修正後問題解決。

Nginx 500錯誤總結