天天看點

總結403到504的常用問題

################ 總結 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

繼續閱讀