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文件,加上兩句
* hard nofile 65535
2 打開/etc/nginx/nginx.conf
在worker_processes的下面增加一行
3 重新啟動nginx,重新載入設置
/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錯誤總結