Nginx 从多个位置读取文件

Nginx reads file from multiple locations

对不起,我是nginx的新手,如果问题不明确,请指点我一些方向。 我在 Disk-1 中有一个图像 xyz.jpg,在 Disk-2 中有一个图像 abc.jpg,当我调用 url:../image/xyz.jpg 时,xyz.jpg (Disk-1) 通过在我的 nginx 文件中使用 alias 显示。问题是: 有什么方法可以调用../image/abc.jpgabc.jpg (Disk-2)会出现吗?

location /image/ {
            expires max;
            add_header Pragma public;
            add_header Cache-Control "public";
            alias  /image_data/;
        }

编辑:我用了 try_files 但没用

        location @image2  {
           alias /image_data_2/;
           try_files $uri $uri/ =404
        }

        location /image/ {
            expires max;
            add_header Pragma public;
            add_header Cache-Control "public";
            alias /image_data/;
            try_files $uri $uri/ @image2;
        }


因此您要检查两个文件夹中的图像以匹配以 /image/ 开头的 URI。

您可以使用 正则表达式 location 块来捕获前缀后面的 URI 部分,从而避免使用 alias 指令。正则表达式位置按顺序计算,因此块在 server 块中的位置很重要。有关详细信息,请参阅 this document

location 块的保护下,root 被设置为公共父目录(在本例中为 /)并使用 [= 构建文件路径18=] 项。

例如:

location ~ ^/image/(.*)$ {
    expires max;
    add_header Pragma public;
    add_header Cache-Control "public";

    root /;
    try_files /image_date/ /image_data_2/ =404;
}

详情见this document