http 錯誤碼解釋 && nginx 自訂錯誤【轉】

來源:互聯網
上載者:User

標籤:錯誤   拒絕   長度   org   工具   ref   ons   輸入   eric   

如果向您的伺服器發出了某項請求要求顯示您網站上的某個網頁(例如,當使用者通過瀏覽器訪問您的網頁或在 Googlebot 抓取該網頁時),那麼,您的伺服器會返回 HTTP 狀態碼以響應該請求。

此狀態碼提供了有關請求狀態的資訊,且為 Googlebot 提供了有關您網站和請求的網頁的資訊。

一些常見的狀態碼為:

200 – 伺服器成功返回網頁404 – 請求的網頁不存在503 – 伺服器暫時不可用以下提供了 HTTP 狀態碼的完整列表。點選連結可瞭解詳細資料。您也可以訪問有關 HTTP 狀態碼的 W3C 頁來瞭解詳細資料。

1xx(臨時響應)

用於表示臨時響應並需要要求者執行操作才能繼續的狀態碼。
   
100(繼續) 要求者應當繼續提出請求。伺服器返回此代碼則意味著,伺服器已收到了請求的第一部分,現正在等待接收其餘部分。
101(切換協議) 要求者已要求伺服器切換協議,伺服器已確認並準備進行切換。

2xx(成功)

用於表示伺服器已成功處理了請求的狀態碼。
   
200(成功) 伺服器已成功處理了請求。通常,這表示伺服器提供了請求的網頁。如果您的 robots.txt 檔案顯示為此狀態,那麼,這表示 Googlebot 已成功檢索到該檔案。
201(已建立) 請求成功且伺服器已建立了新的資源。
202(已接受) 伺服器已接受了請求,但尚未對其進行處理。
203(非授權資訊) 伺服器已成功處理了請求,但返回了可能來自另一來源的資訊。
204(無內容) 伺服器成功處理了請求,但未返回任何內容。
205(重設內容) 伺服器成功處理了請求,但未返回任何內容。與 204 響應不同,此響應要求要求者重設文檔視圖(例如清除表單內容以輸入新內容)。
206(部分內容) 伺服器成功處理了部分 GET 請求。

3xx(已重新導向)

要完成請求,您需要進一步進行操作。通常,這些狀態碼是永遠重新導向的。Google 建議您在每次請求時使用的重新導向要少於 5 個。您可以使用網站管理員工具來查看 Googlebot 在抓取您已重新導向的網頁時是否會遇到問題。 診斷下的抓取錯誤頁中列出了 Googlebot 由於重新導向錯誤而無法抓取的網址。
   
300(多種選擇) 伺服器根據請求可執行多種操作。伺服器可根據要求者 (User agent) 來選擇一項操作,或提供巨集指令清單供要求者選擇。
301(永久移動) 請求的網頁已被永久移動到新位置。伺服器返回此響應(作為對 GET 或 HEAD 請求的響應)時,會自動將要求者轉到新位置。您應使用此代碼通知 Googlebot 某個網頁或網站已被永久移動到新位置。
302(臨時移動) 伺服器目前正從不同位置的網頁響應請求,但要求者應繼續使用原有位置來進行以後的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類似,會自動將要求者轉到不同的位置。但由於 Googlebot 會繼續抓取原有位置並將其編入索引,因此您不應使用此代碼來通知 Googlebot 某個頁面或網站已被移動。
303(查看其他位置) 當要求者應對不同的位置進行單獨的 GET 請求以檢索響應時,伺服器會返回此代碼。對於除 HEAD 請求之外的所有請求,伺服器會自動轉到其他位置。
304(未修改) 自從上次請求後,請求的網頁未被修改過。伺服器返回此響應時,不會返回網頁內容。如果網頁自要求者上次請求後再也沒有更改過,您應當將伺服器配置 為返回此響應(稱為 If-Modified-Since HTTP 標題)。由於伺服器可以告訴 Googlebot 自從上次抓取後網頁沒有更改過,因此可節省頻寬和開銷。
305(使用代理) 要求者只能使用代理訪問請求的網頁。如果伺服器返回此響應,那麼,伺服器還會指明要求者應當使用的代理。
307(臨時重新導向) 伺服器目前正從不同位置的網頁響應請求,但要求者應繼續使用原有位置來進行以後的請求。此代碼與響應 GET 和 HEAD 請求的 301 代碼類似,會自動將要求者轉到不同的位置。但由於 Googlebot 會繼續抓取原有位置並將其編入索引,因此您不應使用此代碼來通知 Googlebot 某個頁面或網站已被移動。

4xx(請求錯誤)

這些狀態碼表示,請求可能出錯,已妨礙了伺服器對請求的處理。
   
400(錯誤請求) 伺服器不理解請求的文法。
401(未授權) 請求要求進行身分識別驗證。登入後,伺服器可能會返回對頁面的此響應。
403(已禁止) 伺服器拒絕請求。如果在 Googlebot 嘗試抓取您網站上的有效網頁時顯示此狀態碼(您可在 Google 網站管理員工具中診斷下的網路抓取頁面上看到此狀態碼),那麼,這可能是您的伺服器或主機拒絕 Googlebot 對其進行訪問。
404(未找到) 伺服器找不到請求的網頁。例如,如果請求是針對伺服器上不存在的網頁進行的,那麼,伺服器通常會返回此代碼。如果您的網站上沒有 robots.txt 檔案,而您在 Google 網站管理員工具“診斷”標籤的 robots.txt 頁上 發現此狀態,那麼,這是正確的狀態。然而,如果您有 robots.txt 檔案而又發現了此狀態,那麼,這說明您的 robots.txt 檔案可能是命名錯誤或位於錯誤的位置。(該檔案應當位於頂級網域名稱上,且應當名為 robots.txt)。如果您在 Googlebot 嘗試抓取的網址上發現此狀態(位於”診斷”標籤的 HTTP 錯誤頁上),那麼,這表示 Googlebot 所追蹤的可能是另一網頁中的無效連結(舊連結或輸入有誤的連結)。
405(方法禁用) 禁用請求中所指定的方法。
406(不接受) 無法使用請求的內容特性來響應請求的網頁。
407(需要代理授權) 此狀態碼與 401(未授權)類似,但卻指定了要求者應當使用代理進行授權。如果伺服器返回此響應,那麼,伺服器還會指明要求者應當使用的代理。
408(請求逾時) 伺服器等候請求時逾時。
409(衝突) 伺服器在完成請求時發生衝突。伺服器必須包含有關響應中所發生的衝突的資訊。伺服器在響應與前一個請求相衝突的 PUT 請求時可能會返回此代碼,同時會提供兩個請求的差異列表。
410(已刪除) 如果請求的資源已被永久刪除,那麼,伺服器會返回此響應。該代碼與 404(未找到)代碼類似,但在資源以前有但現在已經不複存在的情況下,有時會替代 404 代碼出現。如果資源已被永久刪除,那麼,您應當使用 301 代碼指定該資源的新位置。
411(需要有效長度) 伺服器不會接受包含無效內容長度標題欄位的請求。
412(未滿足前提條件) 伺服器未滿足要求者在請求中設定的其中一個前提條件。
413(請求實體過大) 伺服器無法處理請求,因為請求實體過大,已超出伺服器的處理能力。
414(請求的 URI 過長) 請求的 URI(通常為網址)過長,伺服器無法進行處理。
415(不支援的媒體類型) 請求的格式不受請求頁面的支援。
416(請求範圍不符合要求) 如果請求是針對網頁的無效範圍進行的,那麼,伺服器會返回此狀態碼。
417(未滿足期望值) 伺服器未滿足”期望”請求標題欄位的要求。

5xx(伺服器錯誤)

這些狀態碼表示,伺服器在嘗試處理請求時發生內部錯誤。這些錯誤可能是伺服器本身的錯誤,而不是請求出錯。
   
500(伺服器內部錯誤) 伺服器遇到錯誤,無法完成請求。
501(尚未實施) 伺服器不具備完成請求的功能。例如,當伺服器無法識別要求方法時,伺服器可能會返回此代碼。
502(錯誤網關) 伺服器作為網關或代理,從上遊伺服器收到了無效的響應。
503(服務不可用) 目前無法使用伺服器(由於超載或進行停機維護)。通常,這隻是一種暫時的狀態。
504(網關逾時) 伺服器作為網關或代理,未及時從上遊伺服器接收請求。
505(HTTP 版本不受支援) 伺服器不支援要求中所使用的 HTTP 協議版本。

Nginx 499 錯誤引發的思考~~

 

Nginx日誌錯誤資訊如下:

?[Copy to clipboard]View Code LOG
58.212.81.150 - - [21/Oct/2010:03:58:12 -0500] "GET /attachment/view/32807_120x120.jpg HTTP/1.1" 499 0 "http://www.theledlamps.com/" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11"

rfc2616中,400~500間的錯誤碼僅定義到了417,所以499應該是nginx自己定義的。後來想到讀讀nginx代碼,疑問立解。

進入nginx編譯目錄下,輸入如下命令

查看原始碼 列印協助
1 [[email protected] nginx-0.7.67]# grep 499 . -r

得到如下資訊:

?[Copy to clipboard]View Code BASH
./CHANGES: with 499 status code. ./CHANGES: *) Change: now the 499 error could not be redirected using an ./src/http/ngx_http_special_response.c: ngx_null_string, ./src/http/ngx_http_request.h:#define NGX_HTTP_CLIENT_CLOSED_REQUEST 499 ./src/http/ngx_http_core_module.c: if(err->status == NGX_ERROR || err->status == 499){ ./CHANGES.ru: ???Œ? ????499. ./CHANGES.ru: *) ????: Л?? 499 ?х? υ?? х?ρ?—???я???

根據找到的資訊查看/src/http/ngx_http_special_response.c 這個檔案,裡面定義了不少http錯誤碼以及相應的返回。注意到下面的注釋。

?[Copy to clipboard]View Code C

ngx_string(ngx_http_error_495_page),

ngx_string(ngx_http_error_496_page),

ngx_string(ngx_http_error_497_page),

ngx_string(ngx_http_error_404_page),

ngx_null_string,

可以看到,499對應的是 “client has closed connection”。這很有可能是因為伺服器端處理的時間過長,用戶端“不耐煩”了。要解決此問題,就需要在程式上面做些最佳化了。

除了499,nginx還定義了495/496/497/498 這幾個Status Codes,相應的意義也在上面的注釋中可以看到。開源的東西,可以隨時翻看源碼,這一點很棒。

 

轉自

http 錯誤碼解釋 && nginx 自訂錯誤_mandahang_新浪部落格
http://blog.sina.com.cn/s/blog_3f12afd00100u5oc.html

http 錯誤碼解釋 && nginx 自訂錯誤【轉】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.