nginx serve um nome de arquivo diferente do servidor local se url / file não existir

1

Existe uma maneira de o arquivo não existir para o servidor outro arquivo app-*.js em outra pasta, por exemplo:

Acesse o URL: link

Estou recebendo a seguinte mensagem de erro:

[error] 17788#17788: *1 open() "/var/app/assets/build/app/app-48fee50a26.js" failed (2: No such file or directory), client: , server: , request: "GET /assets/build/app/app-48fee50a26.js HTTP/1.1", host:""

Eu quero servir em vez de qualquer outro arquivo js na mesma pasta /var/app/assets/build/app/ , mas o nome do outro arquivo pode mudar constantemente, por exemplo app-62a5962b0a11.js . Eu estava pensando em app\-(.*)\.js .

todos os exemplos abaixo não funcionam:

server {
        listen 80 default_server;
        root /var/app;

        location /assets/build/app/app\-(.*)\.js {
                try_files $uri $uri/ /assets/build/app/app\-(.*)\.js;
        }
}

server {
        listen 80 default_server;
        root /var/app;

        location /assets/build/app/app\-(.*)\.js {
                try_files $uri $uri/ /var/app/assets/build/app/app\-(.*)\.js;
        }
}


Also not working without regex to the location of the other file.

server {
        listen 80 default_server;
        root /var/app;

        location /assets/build/app/app\-(.*)\.js {
                try_files $uri $uri/ /var/app/assets/build/app/app-62a5962b0a11.js;
        }
}

server {
        listen 80 default_server;
        root /var/app;

        location /assets/build/app/app\-(.*)\.js {
                try_files $uri $uri/ /assets/build/app/app-62a5962b0a11.js;
        }
}
    
por Berlin 25.07.2017 / 02:10

1 resposta

1

Sua sintaxe da diretiva location está errada. Se você quiser especificar uma expressão regular, use o modificador ~ ou ~* . Consulte este documento para obter detalhes.

Além disso, você não pode esperar que nginx procure por um arquivo aleatório que corresponda a um padrão. O que significa que sua última tentativa está mais próxima de uma solução de trabalho. Por exemplo:

location ~ ^/assets/build/app/app-.+\.js$ {
    try_files $uri /assets/build/app/app-62a5962b0a11.js =404;
}

Eu adicionei o =404 como o termo padrão para evitar gerar um loop no caso de app-62a5962b0a11.js não existir. Mas, em geral, app-62a5962b0a11.js deve existir para operação adequada. Consulte este documento para a sintaxe try_files .

    
por 25.07.2017 / 15:29

Tags