濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > nginx解決圖片顯示過慢,下載不完全的問題

nginx解決圖片顯示過慢,下載不完全的問題

熱門標(biāo)簽:濟(jì)源電話外呼系統(tǒng)怎么樣 電話機(jī)器人服務(wù)差 ai電銷機(jī)器人 如何開發(fā) 宿州防封外呼系統(tǒng)廠家 蘭州語音電銷機(jī)器人軟件 智能外呼系統(tǒng)如何部署 山東400電話如何辦理 電銷機(jī)器人對(duì)公司貢獻(xiàn) 高德地圖標(biāo)注在建線路

寫在前面

最近,一名讀者跟我說他通過瀏覽器訪問自己的服務(wù)器時(shí),圖片顯示的非常慢,以至于在瀏覽器中都無法完全加載出來,下載文件時(shí),更是惱火,文件根本就無法完全下載下來。而且奇怪的是這位讀者所在的網(wǎng)絡(luò)是沒啥問題的。于是,我便開始幫他排查各種問題。。。

問題定位

經(jīng)過一系列的排查(中間過程我就省略了,直接寫重點(diǎn)了?。?,最終定位到是Nginx的問題。當(dāng)我打開這位讀者的網(wǎng)站后臺(tái)管理系統(tǒng),發(fā)現(xiàn)圖片顯示非常慢,在Nginx前端代理上查出如下錯(cuò)誤信息。

[error] 28423#0: *5 connect() failed (111: Connection refused) while connecting to upstream

直接在后臺(tái)服務(wù)器上用后臺(tái)服務(wù)器的IP地址去訪問,發(fā)現(xiàn)速度相當(dāng)快,于是懷疑是Nginx的配置問題。

注意:當(dāng)下載大的附件,或是頁面中有大圖片時(shí),就會(huì)下載中斷或是圖片無法顯示,也許你會(huì)說我用的Nginx缺省的配置也從來沒有碰到過這種問題呀!我想說的是:那是因?yàn)槟愕木W(wǎng)站沒有大文件,至少?zèng)]有大到使用Nginx的默認(rèn)配置加載不出來。

這里,我給出一段Nginx的配置,如下所示。

location /file {
	 root /home/file;
	 index index.html index.htm;
	 proxy_set_header X-Real-IP $remote_addr;
	 proxy_set_header Host $host;
	 proxy_pass http://127.0.0.1:8080 ;
	 client_max_body_size  100m;
	 client_body_buffer_size 128k;
	 proxy_connect_timeout 600;
	 proxy_read_timeout  600;
	 proxy_send_timeout  600;
	 proxy_buffer_size  32k;
	 proxy_buffers   4 64k;
	 proxy_busy_buffers_size 64k;
	 proxy_temp_file_write_size 64k;
}

其中幾個(gè)重要的參數(shù)如下所示。

  • proxy_connect_timeout 600; #nginx跟后端服務(wù)器連接超時(shí)時(shí)間(代理連接超時(shí))
  • proxy_read_timeout 600; #連接成功后,后端服務(wù)器響應(yīng)時(shí)間(代理接收超時(shí))
  • proxy_send_timeout 600; #后端服務(wù)器數(shù)據(jù)回傳時(shí)間(代理發(fā)送超時(shí))
  • proxy_buffer_size 32k; #設(shè)置代理服務(wù)器(nginx)保存用戶頭信息的緩沖區(qū)大小
  • proxy_buffers 4 32k; #proxy_buffers緩沖區(qū),網(wǎng)頁平均在32k以下的話,這樣設(shè)置
  • proxy_busy_buffers_size 64k; #高負(fù)荷下緩沖大小(proxy_buffers*2)
  • proxy_temp_file_write_size 16k; #設(shè)定緩存文件夾大小,大于這個(gè)值,將從upstream服務(wù)器傳

看到這里,發(fā)現(xiàn)問題了,這位讀者的Nginx有下面一行配置。

proxy_temp_file_write_size 16k;

而他服務(wù)器上的圖片基本都在100K~5M之間。

問題就出在proxy_temp_file_write_size上,當(dāng)服務(wù)器上的文件超過該參數(shù)設(shè)置的大小時(shí),Nginx會(huì)先將文件寫入臨時(shí)目錄(缺省為Nginx安裝目下/proxy_temp目錄),缺省Nginx是以nobody身份啟動(dòng)的,用ls -al 命令查看proxy_temp目錄 nobody是proxy_temp目錄的所有者,怪了那為什么沒權(quán)限呢?接下來查看proxy_temp的父目錄既Nginx安裝目錄。發(fā)現(xiàn)nobody競(jìng)?cè)粵]權(quán)限,怪不得會(huì)出現(xiàn)上面的問題。

解決問題

定位到問題,接下來解決問題就比較簡單了??梢允褂脙煞N方式解決這個(gè)問題,如下所示。

  • 設(shè)置任何人都可以寫 proxy_temp目錄,重啟 Nginx 即可解決。
  • 直接更改proxy_temp_file_write_size的值,將其修改為大于圖片和文件的大小,重啟Nginx。

如果是以第一種方式解決問題的話,比如我的proxy_temp目錄是/usr/local/nginx/proxy_temp,用如下命令將/usr/local/nginx/proxy_temp目錄設(shè)置為任何人都可以寫,問題解決。

chmod -R 777 /usr/local/nginx/proxy_temp/ 

如果是使用第二種方式解決問題的話,就可以直接修改nginx.conf文件,如下所示。

location /file {
	 root /home/file;
	 index index.html index.htm;
	 proxy_set_header X-Real-IP $remote_addr;
	 proxy_set_header Host $host;
	 proxy_pass http://127.0.0.1:8080 ;
	 client_max_body_size  100m;
	 client_body_buffer_size 256k;
	 proxy_connect_timeout 1200;
	 proxy_read_timeout  1200;
	 proxy_send_timeout  6000;
	 proxy_buffer_size  32k;
	 proxy_buffers   4 64k;
	 proxy_busy_buffers_size 128k;
	 proxy_temp_file_write_size 10m;
}

當(dāng)然,我也幫這位讀者優(yōu)化了一些其他的配置項(xiàng)。

好了,今天就聊到這兒吧!別忘了點(diǎn)個(gè)贊,給個(gè)在看和轉(zhuǎn)發(fā),讓更多的人看到,一起學(xué)習(xí),一起進(jìn)步?。?/p>

以上就是nginx解決圖片顯示過慢,下載不完全的問題的詳細(xì)內(nèi)容,更多關(guān)于nginx解決圖片顯示過慢,下載不完全的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

標(biāo)簽:云南 佛山 晉中 畢節(jié) 巴中 安陽 南寧 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《nginx解決圖片顯示過慢,下載不完全的問題》,本文關(guān)鍵詞  nginx,解決,圖片,顯示,過慢,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《nginx解決圖片顯示過慢,下載不完全的問題》相關(guān)的同類信息!
  • 本頁收集關(guān)于nginx解決圖片顯示過慢,下載不完全的問題的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    兰西县| 绥德县| 当阳市| 蓝田县| 疏附县| 清徐县| 东乌珠穆沁旗| 文成县| 都安| 泸西县| 会昌县| 丘北县| 顺平县| 黑水县| 泗洪县| 抚宁县| 湛江市| 灌云县| 辉南县| 咸宁市| 松桃| 布尔津县| 石门县| 同德县| 红安县| 沈阳市| 长宁县| 万盛区| 巴东县| 柳州市| 安徽省| 顺义区| 济源市| 兴宁市| 民权县| 沐川县| 甘泉县| 忻城县| 全南县| 从化市| 东乌珠穆沁旗|