提供静态文件我有两台不同的机器(不同的IP不会忽略)实现2台服务器。让我们称之为serverA的和serverB上。NGINX:从不同的地点
serverA是其中服务器B将为某些静态文件提供数据。
serverA的配置文件是:
limit_req_zone $binary_remote_addr zone=lmz_serverA:10m rate=5r/s;
server {
listen 80; ## listen for ipv4; this line is default and implied
server_name serverA;
location /server_a {
limit_req zone=lmz_serverA burst=5 nodelay;
rewrite /server_a/(.*) /$1 break;
proxy_intercept_errors on;
proxy_pass http://0.0.0.0:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static/BIG/ {
root /safe/server_a/;
autoindex off;
expires 7d;
}
location /server_a/static/{
root /safe/;
autoindex off;
expires 7d;
}
location = /favicon.ico{
alias /safe/server_a/static/images/favicon.ico;
}
}
serverB上配置文件是:
limit_req_zone $binary_remote_addr zone=lmz_serverB:10m rate=5r/s;
server {
listen 80; ## listen for ipv4; this line is default and implied
server_name serverB;
location /server_b {
limit_req zone=lmz_serverB burst=5 nodelay;
rewrite /server_b/(.*) /$1 break;
proxy_intercept_errors on;
proxy_pass http://1.0.0.0:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /server_b/static/ {
root /safe/;
autoindex off;
expires 7d;
}
---结束
现在,想象,这个服务器在不同的大洲..一些静态文件是好吧从serverA的送达,但BIG(/静态/ BIG /)的东西是给我一些麻烦,因为大多数用户都在serverB上的同一个大陆。所以我想从serverA的削减那些大的静态文件,并把它们放在serverB上,使他们能够更方便地下载。
有没有人有任何想法,我怎么才能做到这一点,只是通过使这些文件可用serverB和更改nginx配置文件?
重要:serverA的实现名为的appA Django应用程序,并serverB上实现名为appB的不同(但仍Django的)应用程序。我无法更改这两个应用程序的代码。
在此先感谢!
谢谢,我会试一试! serverB是否直接将文件提供给请求者,或者文件将从serverB传递到serverA,然后提供服务(使serverA工作一个代理)?我希望这些文件直接提供服务,因为在另一种情况下,我不会获得任何收益。 –
他们将直接送达。但请注意,仍然会向serverA发出请求(伴随一个非常小的重定向响应),因此延迟会受到影响 - 如果这不是您想要的,那么您应该直接将html更改为reference/static/BIG /在serverB上。 – cnst
不好意思,但是......在“return 302 $ scheme:// serverB $ uri;”处 如果serverB的ip:1.1.1.1和文件夹和位置是相同的/ static/BIG你将如何重写该行? return 302 $ scheme:http://1.1.1.1/static/BIG ??? –