Обрабатывайте различные статические файлы с помощью nginx в определенном каталоге

Обрабатывайте различные статические файлы с помощью nginx в определенном каталоге

Я создаю приложение, в котором некоторые файлы будут обслуживаться самим приложением. Я не силен в настройке серверной части, поэтому моя конфигурация nginx выглядит так:

location ~* (.+)\.(\d+)\.(js|css|png|jpg|jpeg|gif)$ {
    try_files $uri $1.$3;
}

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml|txt)$ {
    access_log  off;
    expires     30d;
    root        /var/www/domain_tld/public;
}

Я знаю, что второе правило предназначено для обслуживания перечисленных расширений, направленных из nginx, и это здорово, но я хотел бы иметь правило, которое гласит:

/data/photos/{string}/{name}.{extension}

заранее спасибо

решение1

Я предполагаю, что вы хотите передать на сервер URI местоположения, например, (.+)\.(\d+)\.(js|css|png|jpg|jpeg|gif)$файлу, следующему за /data/photos/$1/$2.$3.

Далее все просто (обратите внимание, что я немного изменил регулярное выражение, его можно было бы усовершенствовать, добавив в белый список все возможные случаи):

location ~* ^/(?<string>.+)\.(?<name>\d+)\.(?<extension>js|css|png|jpg|jpeg|gif)$ {
    root /data/photos;
    try_files $string/$name.$extension =404;
}

Вызов URI /myString.file.extбудет обслуживать контент из/data/photos/myString/file.ext

Обратите внимание, что все расположения nginx начинаются с /.

Также помните, что каждый запрос обслуживаетсятолько одинместоположение, поэтому вы можете захотеть объединить оба, если предполагается, что они будут применяться к запросам одновременно.

Связанный контент