Local nomeado como fallback na diretiva try_files

1

Estou com problema ao envolver meu processamento de roteamento no Nginx.

server {
    listen 80;
    listen [::]:80;
    server_name my_domain;

    root /var/www/ep;

    index index.html;

    error_page 403 404 /my403.html;

    location /images/ {
            try_files $uri @not_found;
    }

    location @not_found {
            root /var/www/ep/not_found;
            try_files NON_EXISTENT_1 /not_found.jpg;
    }
}

Para a configuração acima, quando eu visito o link link ou Espero que a diretiva @not_found location ocorra retornando uma imagem de /var/www/ep/not_found/not_found.jpg (ela existe), mas de alguma forma /var/www/ep/not_found.jpg path está sendo tentada (ela não existe). Isso resulta na exibição do arquivo /my403.html .

Eu quero usar a abordagem de local nomeado ( @not_found ).

Alguém poderia explicar o que está acontecendo aqui?

Por que /var/www/ep/not_found/not_found.jpg não é veiculado?

    
por lilly 10.08.2018 / 02:14

1 resposta

0

Você coloca /not_found.jpg no final da instrução try_files , o que torna o termo URI, o que significa que nginx pesquisará um novo location para processar a solicitação. Você deve fazer não durar, por exemplo:

try_files /not_found.jpg =404;

Veja este documento para saber mais.

Como alternativa a um named location , você poderia usar:

location /images/ {
        try_files $uri /not_found.jpg;
}
location = /not_found.jpg {
    root /var/www/ep/not_found;
}

Veja este documento para detalhes.

    
por 10.08.2018 / 10:53

Tags