################ 總結 403 Forbidden ##############
1. nginx配置檔案裡不配置預設首頁參數或者首頁檔案在站點目錄下沒有
譬如:沒有配置 index index.php index.html index.htm;
2. 站點目錄或内部的程式檔案沒有Nginx使用者通路權限
譬如: chmod 700 index.php 或者 chmod 700 db2 無法讀取檔案
3. Nginx配置檔案中設定allow、deny等權限控制,導緻用戶端沒有沒權限通路,即屏蔽某個ip通路.
譬如:在server中
allow 192.168.1.0/24;
deny all;
################ 總結 502 Bad Gateway ##############
1. 502錯誤一般不是nginx錯誤,一般是後端有問題。nginx背鍋了。
2. 後端主機當機,error timeout
3. PHP FastCGI程序數不夠用,如果接近預設的程序數就不夠用.(netstat -anpo | grep "php-fpm" | wc -l)
4. 部分PHP程式的執行時間超過了Nginx的等待時間.(适當修改nginx.conf中的fastcgi的timeout時間),譬如:fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300。。。。
5. PHP的記憶體是否不足(譬如修改了php.ini的memory_limit為64M)
6. 調整php-fpm.conf參數:max_children最多10個程序,按照每個程序20MB記憶體,最多200MB。request_terminate_timeout執行的時間為60秒,也就是1分鐘。
7. mysql有瓶頸
################ 總結 503 ##############
1. 服務不可用
2. 出現503錯誤多半是因為網站通路量大,造成了流量超限或者并發數大引起的資源超限出現的錯誤。
3. 如果網站程式沒有問題,可能空間有過多的限制造成了系統資源不足引起的錯誤,可以考慮換空間了。
4. 如果空間沒有問題,那麼就要仔細檢查網站程式是否有死循環或者記憶體洩露等問題。
5.
nginx裡的通路限制:
limit_conn_zone $binary_remote_addr zone=addr:5m;
limit_conn addr 800;
參數$binary_remote_addr:表示以用戶端ip作為鍵值來進行限制
參數zone=addr:5m:表示生成一個大小為5M,名字為addr的存儲區域,用來存儲通路次數
參數addr 800:表示在addr存儲區内,限制用戶端ip隻能通路800次,若超過通路限制,則傳回503錯誤。
################ 總結 504 ##############
1. 網關逾時
Nginx 504錯誤(Gateway time-out 網關逾時)的含義是所請求的網關沒有請求到,簡單來說就是沒有請求到可以執行的PHP-CGI】
一般看來, 這種情況可能是由于nginx預設的fastcgi程序響應的緩沖區太小造成的, 這将導緻fastcgi程序被挂起, 如果你的fastcgi服務對這個挂起處理的不好, 那麼最後就極有可能導緻504 Gateway Time-out。
現在的網站, 尤其某些論壇有大量的回複和很多内容的, 一個頁面甚至有幾百K,預設的fastcgi程序響應的緩沖區是8K, 我們可以設定大點,
在nginx.conf裡, 加入:
fastcgi_buffers 8 128k
這表示設定fastcgi緩沖區為8×128k
當然如果您在進行某一項即時的操作, 可能需要nginx的逾時參數調大點, 例如設定成60秒:
send_timeout 60;
Nginx 502與504的差別:
Nginx 502 Bad Gateway的含義是請求的PHP-CGI已經執行,但是由于某種原因(一般是讀取資源的問題)沒有執行完畢而導緻PHP-CGI程序終止。
Nginx 504 Gateway Time-out的含義是所請求的網關沒有請求到,簡單來說就是沒有請求到可以執行的PHP-CGI。
解決這兩個問題其實是需要綜合思考的,一般來說Nginx 502 Bad Gateway和php-fpm.conf的設定有關,而Nginx 504 Gateway Time-out則是與nginx.conf的設定有關。
本文轉自cloves 51CTO部落格,原文連結:http://blog.51cto.com/yeqing/1918176