日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
圖片顯示過慢,文件下載不完全,竟然是Nginx的鍋!!

 作者個人研發(fā)的在高并發(fā)場景下,提供的簡單、穩(wěn)定、可擴展的延遲消息隊列框架,具有精準的定時任務和延遲隊列處理功能。自開源半年多以來,已成功為十幾家中小型企業(yè)提供了精準定時調(diào)度方案,經(jīng)受住了生產(chǎn)環(huán)境的考驗。為使更多童鞋受益,現(xiàn)給出開源框架地址:https://github.com/sunshinelyz/mykit-delay

寫在前面

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

問題定位

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

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

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

注意:當下載大的附件,或是頁面中有大圖片時,就會下載中斷或是圖片無法顯示,也許你會說我用的Nginx缺省的配置也從來沒有碰到過這種問題呀!我想說的是:那是因為你的網(wǎng)站沒有大文件,至少沒有大到使用Nginx的默認配置加載不出來。

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

 
 
 
 
  1. location /file { 
  2.      root /home/file; 
  3.      index  index.html index.htm; 
  4.      proxy_set_header X-Real-IP $remote_addr; 
  5.      proxy_set_header   Host $host; 
  6.      proxy_pass http://127.0.0.1:8080 ; 
  7.      client_max_body_size     100m; 
  8.      client_body_buffer_size  128k; 
  9.      proxy_connect_timeout    600; 
  10.      proxy_read_timeout       600; 
  11.      proxy_send_timeout       600; 
  12.      proxy_buffer_size        32k; 
  13.      proxy_buffers          4 64k; 
  14.      proxy_busy_buffers_size 64k; 
  15.      proxy_temp_file_write_size 64k; 

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

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

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

 
 
 
 
  1. proxy_temp_file_write_size 16k; 

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

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

解決問題

定位到問題,接下來解決問題就比較簡單了。可以使用兩種方式解決這個問題,如下所示。

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

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

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

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

 
 
 
 
  1. location /file { 
  2.      root /home/file; 
  3.      index  index.html index.htm; 
  4.      proxy_set_header X-Real-IP $remote_addr; 
  5.      proxy_set_header   Host $host; 
  6.      proxy_pass http://127.0.0.1:8080 ; 
  7.      client_max_body_size     100m; 
  8.      client_body_buffer_size  256k; 
  9.      proxy_connect_timeout    1200; 
  10.      proxy_read_timeout       1200; 
  11.      proxy_send_timeout       6000; 
  12.      proxy_buffer_size        32k; 
  13.      proxy_buffers            4 64k; 
  14.      proxy_busy_buffers_size  128k; 
  15.      proxy_temp_file_write_size 10m; 

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

好了,今天就聊到這兒吧!別忘了點個贊,給個在看和轉(zhuǎn)發(fā),讓更多的人看到,一起學習,一起進步!!

本文轉(zhuǎn)載自微信公眾號「 冰河技術(shù)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系 冰河技術(shù)公眾號。


新聞標題:圖片顯示過慢,文件下載不完全,竟然是Nginx的鍋!!
標題路徑:http://www.5511xx.com/article/dpgsejd.html