Diretiva de localização não funciona

Diretiva de localização não funciona

Para meu servidor NGINX, tenho um servidor virtual configurado apenas para distribuir conteúdo estático. No momento estou tentando configurar para que as imagens tenham prazo de validade. No entanto, quando eu crio uma diretiva de localização para isso, tudo resulta em 404.

Minha configuração agora está assim:

/srv/www/static.conf

server {
    listen                          80;
    server_name                     static.*.*;

    location / {
            root                    /srv/www/static;
            deny                    all;
    }

    location /images {
            expires                 1y;
            log_not_found           off;
            root                    /srv/www/static/images;
    }
}

Observe que este arquivo está incluído em /etc/nginx/nginx.conf, dentro de uma diretiva http

Estou tentando acessar a imagem, em, digamos... static.example.com/images/screenshots/something.png. Com certeza, a imagem também existe em /srv/www/static/images/screenshots/something.png. No entanto, ir para esse endereço não funciona e simplesmente me diz404 não encontrado.

No entanto, se eu remover location /imagese mudar location /para o seguinte ...

location / {
    root /srv/www/static;
}

Funciona! O que estou fazendo de errado aqui?

Responder1

Sua configuração está seguindo a configuração do nginxarmadilhasVocê deve lê-lo antes de configurar o nginx.

Para responder à sua pergunta, você não deve definir rooto local, defina-o uma vez e a tag de localização permitirá automaticamente atribuir acesso a diretórios específicos.

Além disso, em vez de definir raiz personalizada para o diretório de imagens, use try_files. O diretório $urimapeará /images/com /static/images/.

Experimente esta configuração:

server {
    listen                          80;
    server_name                     static.*.*;
    root                            /srv/www;

    location /static/ {
            deny                    all;
    }

    location /images/ {
            expires                 1y;
            log_not_found           off;
            autoindex               off;
            try_files $uri static/images$uri;
    }
}

informação relacionada