今日在使用 Nginx 的時候出現 500 錯誤,就搜索了一下錯誤代碼,分享給大家。
500(服務器內部錯誤) 服務器遇到錯誤,無法完成請求。
501(尚未實施) 服務器不具備完成請求的功能。例如,當服務器無法識別請求方法時,服務器可能會返回此代碼。
502(錯誤網關) 服務器作為網關或代理,從上游服務器收到了無效的響應。
503(服務不可用) 目前無法使用服務器(由于超載或進行停機維護)。通常,這只是一種暫時的狀態。
504(網關超時) 服務器作為網關或代理,未及時從上游服務器接收請求。
505(HTTP 版本不受支持) 服務器不支持請求中所使用的 HTTP 協議版本。
Nginx 500錯誤(Internal Server Error 內部服務器錯誤):500錯誤指的是服務器內部錯誤,也就是服務器遇到意外情況,而無法履行請求。
在高并發連接的情況下,Nginx是Apache服務器不錯的替代品。Nginx同時也可以作為7層負載均衡服務器來使用。根據測試結果,Nginx 0.6.31 + PHP 5.2.6 (FastCGI) 可以承受3萬以上的并發連接數,相當于同等環境下Apache的10倍。
但很多人用 Nginx 的時候都會出現 500 錯誤,根據我使用的情況來看,有以下幾種情況?! ?/p>
1、是否磁盤空間不足?
使用 df -k 查看硬盤空間是否滿了。清理硬盤空間就可以解決500錯誤。nginx如果開啟了access log,在不需要的情況下,最好關閉access log。access log會占用大量硬盤空間。
2、nginx配置文件錯誤?
這里不是指語法錯誤,nginx如果配置文件有語法錯誤,啟動的時候就會提示。當配置rewrite的時候,有些規則處理不當會出現500錯誤,請仔細檢查自己的rewrite規則。如果配置文件里有些變量設置不當,也會出現500錯誤,比如引用了一個沒有值的變量。
3、如果上面的問題都不存在可能是模擬的并發數太多了,需要調整一下nginx.conf的并發設置數
4、還有就是Linux索引節點(inode)用滿導致故障的,df -i
由索引節點(inode)爆滿引發500問題https://www.jb51.net/article/175430.htm
inode譯成中文就是索引節點,每個存儲設備(例如硬盤)或存儲設備的分區被格式化為文件系統后,應該有兩部份,一部份是inode,另一部份是Block,Block是用來存儲數據用的。而inode呢,就是用來存儲這些數據的信息,這些信息包括文件大小、屬主、歸屬的用戶組、讀寫權限等。inode為每個文件進行信息索引,所以就有了inode的數值。操作系統根據指令,能通過inode值最快的找到相對應的文件。 而服務器的Block雖然還有剩余,但inode已經用滿,因此在創建新目錄或文件時,系統提示磁盤空間不足。
一般分析思路:
(1)查看nginx error log ,查看php error log
nginx 錯誤日志 error.log 默認位置:/usr/local/nginx/logs
(2)如果是too many open files,修改nginx的worker_rlimit_nofile參數,使用ulimit查看系統打開文件限制,修改/etc/security/limits.conf
(3)如果是腳本的問題,則需要修復腳本錯誤,并優化代碼
(4)各種優化都做好,還是出現too many open files,那就要考慮做負載均衡,把流量分散到不同服務器上去了。
解決方法是:
1 打開/etc/security/limits.conf文件,加上兩句
代碼如下:
* soft nofile 65535* hard nofile 65535
2 打開/etc/nginx/nginx.conf
新聞熱點
疑難解答