Nginx 500錯誤總結

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

 

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

500錯誤通常有幾種狀況:

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

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

通常分析思路:

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

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

(3)若是是腳本的問題,則須要修復腳本錯誤,並優化代碼服務器

(4)各類優化都作好,仍是出現too many open files,那就要考慮作負載均衡,把流量分散到不一樣服務器上去了。併發

 

錯誤緣由總結:

一、硬盤空間滿了 

使用 df -k 查看硬盤空間是否滿了。清理硬盤空間就能夠解決500錯誤。nginx若是開啓了access log,在不須要的狀況下,最好關閉access log。access log會佔用大量硬盤空間。 

二、nginx配置文件錯誤 

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

三、若是上面的問題都不存在多是模擬的併發數太多了,須要調整一下nginx.conf的併發設置數 

解決方法是: 

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

複製代碼代碼以下:
* soft nofile 65535 
* hard nofile 65535 


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

複製代碼代碼以下:
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報錯的狀況了。 

四、有多是數據庫問題個人在nginx日誌php日誌都沒有發現什麼問題, 最後發現數據庫訪問不了,修正後問題解決。

相關文章
相關標籤/搜索