
Estou construindo um aplicativo onde alguns arquivos serão veiculados pelo próprio aplicativo. Não sou bom em configurar coisas do lado do servidor, então minha configuração do nginx é assim:
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;
}
Eu sei que a segunda regra é para servir as extensões listadas direcionadas do nginx e isso é legal, mas eu gostaria de ter uma regra que dissesse:
/data/photos/{string}/{name}.{extension}
Agradeço antecipadamente
Responder1
Presumo que você deseja servir um URI de localização como (.+)\.(\d+)\.(js|css|png|jpg|jpeg|gif)$
um arquivo a seguir /data/photos/$1/$2.$3
.
Então, é tão simples quanto isso (observe que modifiquei ligeiramente o regex, pode ser aperfeiçoado colocar todos os casos na lista branca o mais próximo possível):
location ~* ^/(?<string>.+)\.(?<name>\d+)\.(?<extension>js|css|png|jpg|jpeg|gif)$ {
root /data/photos;
try_files $string/$name.$extension =404;
}
Uma chamada para o /myString.file.ext
URI servirá conteúdo de/data/photos/myString/file.ext
Observe que todos os locais do nginx começam com /
.
Lembre-se também de que cada solicitação é atendida porapenas umlocalização, portanto, você pode querer mesclar os dois se eles forem aplicados simultaneamente às solicitações.