Nginx图片递归代理服务器DEMO

业务需求

服务器A为入口服务器,其中还有B.C.D...Z等若干服务器,它们的关系如下:

A知道B服务器地址,B知道C服务器地址....

需实现: 请求:http://serverA.com/picture.jpg 当A服务器不存在时,去A的上一级B服务器取,B服务器不存在时去B的上一级C服务器取...

配置如下:

A服务器:

location / {
    try_files $request_filename @proxy;
}
location @proxy {
    rewrite ^/(.*)$ http://serverB.com/$1 break;
    break;
}

B服务器:

location / {
    try_files $request_filename @proxy;
}
location @proxy {
    rewrite ^/(.*)$ http://serverC.com/$1 break;
    break;
}

.......

配置说明

try_files为Nginx尝试获取文件的方法,写法为:

try_files fileA fileB fileC;

当fileA不存在时,访问fileB/C/D... 一直到访问不到时,返回404

A服务器配置中,try_files请求当前的文件request_filename,如果找不到文件,访问@proxy代理的文件。 以此类推,如果一直查不到,则返回404。