nginx作為反向代理服務(wù)器,小文件上傳可以,大文件上傳會報413,400,414(如 413 request Entity too Large)
等狀態(tài)碼,這是因為請求長度超過了nginx默認(rèn)的緩存大小和最大客戶端最大請求大小。
針對post請求解決辦法:修改nginx.conf里面的幾個相關(guān)的配置參數(shù)client_body_buffer_size 10m(配置請求體緩存區(qū)大小, 不配的話)
client_max_body_size 20m(設(shè)置客戶端請求體最大值)
client_body_temp_path /data/temp (設(shè)置臨時文件存放路徑。只有當(dāng)上傳的請求體超出緩存區(qū)大小時,才會寫到臨時文件中,注意臨時路徑要有寫入權(quán)限)
如果上傳文件大小超過client_max_body_size時,會報413 entity too large的錯誤。針對get請求解決辦法:針對get請求,我們可以通過修改另外兩個配置來解決請求串超長的問題:
client_header_buffer_size 語法:client_header_buffer_size size 默認(rèn)值:1k 使用字段:http, server 這個指令指定客戶端請求的http頭部緩沖區(qū)大小絕大多數(shù)情況下一個頭部請求的大小不會大于1k不過如果有 來自于wap客戶端的較大的cookie它可能會大于1k,Nginx將分配給它一個更大的緩沖區(qū),這個值可以在 large_client_header_buffers里面設(shè)置。 large_client_header_buffers 語法:large_client_header_buffers number size 默認(rèn)值:large_client_header_buffers 4 4k/8k 使用字段:http, server 指令指定客戶端請求的一些比較大的頭文件到緩沖區(qū)的最大值,如果一個請求的URI大小超過這個值,服務(wù) 器將返回一個"Request URI too large" (414),同樣,如果一個請求的頭部字段大于這個值,服務(wù)器 將返回"Bad request" (400)。 緩沖區(qū)根據(jù)需求的不同是分開的。 默認(rèn)一個緩沖區(qū)大小為操作系統(tǒng)中分頁文件大小,通常是4k或8k,如果一個連接請求將狀態(tài)轉(zhuǎn)換為 keep-alive,這個緩沖區(qū)將被釋放。那么有人就會覺得奇怪了,為什么修改http header的大小就能解決get請求串過長的問題呢, 這就要從http協(xié)議的get請求說起了,其實GET提交,請求的數(shù)據(jù)會附在URL之后(就是把數(shù)據(jù)放置在 HTTP協(xié)議頭中)。
大家看到?jīng)],其實get請求的參數(shù)就是存放在http header中的,所以修改header的大小限制 當(dāng)然可以解決請求串過長的問題啦。此外還有給大家澄清一點啦,HTTP協(xié)議沒有對傳輸?shù)臄?shù)據(jù)大小進行限 制,HTTP協(xié)議規(guī)范也沒有對URL長度進行限制,我們?nèi)粘I钪杏龅降拈L度限制都是各個瀏覽器或者http 請求工具自己干的。參考:
http://www.51testing.com/html/13/377613-805851.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。