Trate diferentes arquivos estáticos com nginx em um diretório concreto

Trate diferentes arquivos estáticos com nginx em um diretório concreto

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.extURI 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.

informação relacionada