Nginx читает файл из нескольких мест - PullRequest
1 голос
/ 01 июля 2019

Простите, я новичок в nginx, если вопрос расплывчатый, пожалуйста, укажите мне несколько направлений.У меня есть изображение xyz.jpg в Disk-1 и изображение abc.jpg в Disk-2, когда я вызываю url: ../image/xyz.jpg, xyz.jpg (Disk-1) отображается с помощью alias в файле моего nginx.Вопрос: есть ли способ позвонить ../image/abc.jpg, появится abc.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;
        }


1 Ответ

1 голос
/ 02 июля 2019

Таким образом, вы хотите проверить две папки для изображений, чтобы соответствовать URI, начинающимся с /image/.

Вы можете использовать блок регулярное выражение location для захвата части URI, следующей за префиксом, что исключает использование директивы alias. Местоположения регулярных выражений оцениваются по порядку, поэтому размещение блока в блоке server имеет большое значение. Подробнее см. в этом документе .

В рамках защиты блока location для root устанавливается общий родительский каталог (в данном случае /), и для построения пути к файлам используются термины try_files.

Например:

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

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

Подробнее см. в этом документе .

...