nginx 返回截斷問題

      網(wǎng)友投稿 1881 2025-03-31

      場景

      同一個請求?html?get?請求,在請求頭里有?Accept-Encoding: gzip?的時候,html 正常返回,沒有?Accept-Encoding: gzip?html 返回被截斷。

      解決辦法

      增加 nginx 日志,查看

      100790 open() "/usr/local/nginx/proxy_temp/2/40/0000000402" failed (13: Permission denied) while reading upstream

      問題很明顯,權(quán)限問題

      問題原因

      未開啟?gzip?的時候,響應(yīng)較大,由于響應(yīng)的文件過大,導(dǎo)致?nginx?緩沖區(qū)無法無法存下整個響應(yīng),然后將文件寫入了臨時目錄,但是由于臨時目錄存在權(quán)限問題,導(dǎo)致寫入臨時目錄失敗, 所以?nginx?只將緩沖區(qū)存儲的數(shù)據(jù)返回給了客戶端,而這個數(shù)據(jù)是只是響應(yīng)的一部分,導(dǎo)致客戶端收到不完整的響應(yīng),而開啟 gzip 壓縮后,數(shù)據(jù)量會變小,緩沖區(qū)可以存儲整個響應(yīng),就不會出現(xiàn)上述的問題。

      知識補充

      什么是代理緩沖區(qū)

      Nginx作為一個常用的反向代理,提供了代理緩沖的功能。它允許nginx將server端的響應(yīng)讀取下來緩存在本地內(nèi)存或磁盤中,再以合適的速度發(fā)送給客戶端

      為什么需要代理緩沖區(qū)

      因為 客戶端-nginx-后端服務(wù) 之間的網(wǎng)絡(luò)速度不一致,沒有代理緩沖區(qū)的話,客戶端到?nginx?的網(wǎng)速過慢,導(dǎo)致?nginx?只能以一個較慢的速度將響應(yīng)傳給客戶端;進而導(dǎo)致后端?server?也只能以同樣較慢的速度傳遞響應(yīng)給?nginx,造成一次請求連接耗時過長。

      在高并發(fā)的情況下,后端?server?可能會出現(xiàn)大量的連接積壓,最終拖垮?server?端。

      開啟緩沖區(qū)后:

      nginx?可以用較快的速度盡可能將響應(yīng)體從?server?端讀取并緩沖到本地內(nèi)存或磁盤中,然后同時根據(jù)客戶端的網(wǎng)絡(luò)質(zhì)量以合適的網(wǎng)速將響應(yīng)傳遞給客戶端。

      代理緩沖區(qū)缺點

      開啟代理緩沖會消耗nginx服務(wù)器的內(nèi)存,如果請求過多,可能會導(dǎo)致nginx內(nèi)存消耗過大

      在響應(yīng)過大的情況下,設(shè)置的緩沖區(qū)無法存下整個響應(yīng)體,nginx會將剩余的內(nèi)容寫到磁盤臨時文件中。在請求量較大的情況下,可能會導(dǎo)致nginx服務(wù)器磁盤io過高。而往往臨時文件都存放在/tmp下,而/tmp目錄一般掛載在系統(tǒng)盤上,系統(tǒng)盤io過高會進一步導(dǎo)致系統(tǒng)負載上漲。

      在客戶端網(wǎng)絡(luò)質(zhì)量很好的情況下,比如客戶端到nginx也是同機房內(nèi),這時關(guān)閉代理緩沖直接將響應(yīng)實時轉(zhuǎn)發(fā)給客戶端效率更高

      配置參數(shù)

      proxy_buffering 控制開關(guān)緩沖區(qū)

      Syntax: proxy_buffering on | off; Default: proxy_buffering on; Context: http, server, location

      當(dāng)開啟代理緩沖區(qū)時,nginx?會盡快的從server?端讀取響應(yīng)并緩存在內(nèi)存分配的緩沖區(qū)中。代理緩沖區(qū)的大小由proxy_buffer_size?和?proxy_buffers?參數(shù)指定。

      當(dāng)響應(yīng)大小超出內(nèi)存緩沖區(qū)時,一部分響應(yīng)體可以保存在磁盤臨時文件中。磁盤臨時文件的大小由proxy_max_temp_file_size和proxy_temp_file_write_size參數(shù)指定。

      nginx 返回截斷問題

      proxy_buffer_size 響應(yīng)頭存儲大小

      Syntax: proxy_buffer_size size; Default: proxy_buffer_size 4k|8k; Context: http, server, location

      后端服務(wù)器的相應(yīng)頭會放到?proxy_buffer_size?當(dāng)中,這個大小默認等于proxy_buffers當(dāng)中的設(shè)置單個緩沖區(qū)的大小。?proxy_buffer_size只是響應(yīng)頭的緩沖區(qū),沒有必要也跟著設(shè)置太大

      通常,該緩沖區(qū)大小設(shè)置為一個內(nèi)存頁的大小,具體是 4k 或 8k,取決于服務(wù)器平臺。也可以把它設(shè)置的更小,但是沒必要設(shè)置過大了,因為只是用于緩沖初始部分響應(yīng)。

      proxy_buffers 響應(yīng)體緩沖區(qū)存儲大小

      大小由 number * size 決定

      Syntax: proxy_buffers number size; Default: proxy_buffers 8 4k|8k; Context: http, server, location

      值得注意的是,這里設(shè)置的緩沖區(qū)大小是針對每個請求連接而言的。也就是說對于每一個連接,都會分配?number*size?大小的內(nèi)存緩沖區(qū)。

      proxy_busy_buffers_size 發(fā)送客戶端數(shù)據(jù)緩沖區(qū)大小

      Syntax: proxy_busy_buffers_size size; Default: proxy_busy_buffers_size 8k|16k; Context: http, server, location

      nginx?未讀取到完整響應(yīng),允許開始給客戶端發(fā)送響應(yīng)的緩沖區(qū)大小

      nginx?會在沒有完全讀完后端響應(yīng)的時候就開始向客戶端傳送數(shù)據(jù),所以它會劃出一部分緩沖區(qū)來專門向客戶端傳送數(shù)據(jù)(這部分的大小是由?proxy_busy_buffers_size?來控制的,建議為proxy_buffers中單個緩沖區(qū)大小的2倍),然后它繼續(xù)從后端取數(shù)據(jù),緩沖區(qū)滿了之后就寫到磁盤的臨時文件中。

      proxy_max_temp_file_size 磁盤臨時文件大小

      Syntax: proxy_max_temp_file_size size; Default: proxy_max_temp_file_size 1024m; Context: http, server, location

      設(shè)置磁盤臨時文件的最大 size

      當(dāng)?server?端返回的整個響應(yīng)超出?proxy_buffering?和?proxy_buffers?設(shè)置的內(nèi)存緩沖區(qū)大小時,剩余的響應(yīng)體可以保存在一個磁盤臨時文件中。proxy_max_temp_file_size?指定了該臨時文件的最大大小。

      proxy_temp_file_write_size 每次寫入磁盤臨時文件的大小

      Nginx

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:【華為云-上云之路】分享云服務(wù)器 CentOS 下的云硬盤增加容量的兩種實現(xiàn)方式
      下一篇:Excel表格中用公式自動生成帶鏈接的目錄的方法(excel表格怎么做鏈接目錄)
      相關(guān)文章
      亚洲成A人片在线观看无码3D| 亚洲综合无码一区二区痴汉| 久久亚洲精品高潮综合色a片| 亚洲成无码人在线观看| 久久久亚洲欧洲日产国码二区 | 亚洲日本在线免费观看| 亚洲黄网在线观看| 亚洲熟妇无码爱v在线观看| 久久久无码精品亚洲日韩京东传媒 | 中国亚洲呦女专区| 美女视频黄免费亚洲| 亚洲色在线无码国产精品不卡| 亚洲精品二三区伊人久久| 性xxxx黑人与亚洲| 亚洲午夜在线播放| 亚洲gay片在线gv网站| 亚洲AV电影天堂男人的天堂| 在线亚洲v日韩v| 亚洲精品国产自在久久| 亚洲免费日韩无码系列| 亚洲综合色视频在线观看| 中文字幕精品无码亚洲字| 精品亚洲综合久久中文字幕| 亚洲AV无码不卡无码| 666精品国产精品亚洲| 亚洲人成影院在线高清| 2020天堂在线亚洲精品专区| 亚洲AV成人一区二区三区观看 | 亚洲国产成人手机在线观看| 在线观看亚洲专区| 国产a v无码专区亚洲av | 亚洲综合偷自成人网第页色| 亚洲成av人片在线天堂无| 亚洲av日韩片在线观看| 亚洲最大AV网站在线观看| 久久精品视频亚洲| 亚洲小说区图片区| 亚洲色大情网站www| 五月婷婷亚洲综合| 亚洲伊人久久精品影院| 亚洲午夜精品一区二区|