
Я создаю приложение, в котором некоторые файлы будут обслуживаться самим приложением. Я не силен в настройке серверной части, поэтому моя конфигурация 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 начинаются с /
.
Также помните, что каждый запрос обслуживаетсятолько одинместоположение, поэтому вы можете захотеть объединить оба, если предполагается, что они будут применяться к запросам одновременно.