我为图像主机运行以下配置。虽然一切正常,但服务器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;
}