我爲圖像主機運行以下配置。雖然一切正常,但服務器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;
}