2015-12-05 93 views
0

我爲圖像主機運行以下配置。雖然一切正常,但服務器2和3之間存在很多流量,我認爲這不是必須的。看來服務器2正在從服務器3下載數據,同時服務器3也直接向客戶端提供圖像...所以服務器2爲什麼要從服務器3請求數據?nginx proxy_pass後端服務器流量

上服務器3的總流出流量的

50%是在服務器2

傳入流量如果一個請求,其具有嵌入在下面的圖像的php文件:http://example.com/upload/i/2014/12345.jpg它通過代理通,apache的處理PHP文件並重寫服務器2上的nginx服務器處理的圖像鏈接。

如果有人要求一個嵌入了下面圖像的php文件:http://example.com/upload/i/2015/12345.jpg它通過代理傳遞,apache處理php文件,並重寫服務器3上的nginx服務器處理的圖像鏈接,但數據發送到服務器2以及導致大量涌入的流量。我的問題是爲什麼會發生這種情況,我能以某種方式防止這種情況發生

同樣的事情發生,如果我刪除了apache重寫規則,並改變它nginx的服務器上重寫規則1.

服務器1(Nginx的)

server { 
     server_name example.com; 

     location/{ 
       proxy_pass     http://1.2.3.4:21211; 
       proxy_set_header   X-Real-IP $remote_addr; 
       proxy_set_header   Host "example.com"; 
       proxy_buffer_size   128k; 
       proxy_buffers    4 256k; 
       proxy_busy_buffers_size  256k; 
     } 
} 

服務器2(阿帕奇/ nginx的)

<VirtualHost *:21211> 
     ServerName example.com 

     DocumentRoot /storage/example.com/public 

     <Directory /storage/example.com/public> 
       Options -Indexes +FollowSymLinks 
     </Directory> 

     <Directory "/upload"> 
       RewriteEngine On 
       RewriteRule ^i/2014/([0-9]{5}\.jpg)$ http://fs1.example.com/2014/$1 [R] 
       RewriteRule ^i/2015/([0-9]{5}\.jpg)$ http://fs2.example.com/2015/$1 [R] 
     </Directory> 

</VirtualHost> 

-

server { 
     listen 80; 
     server_name fs1.example.com; 

     access_log off; 
     error_log /dev/null; 

     root /storage/fs1.example.com/upload; 
} 

服務器3(Nginx的)

server { 
     listen 80; 
     server_name fs2.example.com; 

     access_log off; 
     error_log /dev/null; 

     root /storage/fs2.example.com/upload; 
} 

回答

0

終於找到了答案。我在服務器2上的軟件有一個PHP函數(getimagesize),它正在獲取圖像以獲取它們的尺寸。由於我拆分了我的文件服務器,該功能開始通過Internet從遠程文件服務器(服務器3)獲取圖像,導致流量激增。