tipo de conteúdo dinâmico try_files

tipo de conteúdo dinâmico try_files

Fiquei me perguntando como poderia servir diferentes tipos de conteúdo para cada arquivo.
Por exemplo, tenho a seguinte configuração do nginx:

server {
    listen 80;
    server_name site.com;

    location ~ ^/(.*) {
        root /home/site/;
        try_files $uri
            $uri.png
            $uri.bin
            =404;
        }
}

Assim, por exemplo, qualquer um $uri.pngterá image/pngum cabeçalho de tipo de conteúdo e $uri.binterá application/octet-stream.

Problema: não sei como determinar filequal try_filesfoi escolhido.
Eu tenho o módulo lua configurado e funcionando caso seja necessário.

Alguém mais tentou algo assim?

Responder1

Supondo que entendi o que você procura, isso funciona para mim:

if ($request_uri ~* \.png$) {
    more_set_headers "Content-type: image/png";
}
if ($request_uri ~* \.(jpg|jpeg)$) {
    more_set_headers "Content-type: image/jpeg";
}
if ($request_uri ~* \.gif$) {
    more_set_headers "Content-type: image/gif";
}

Requer um módulo não padrão, a menos que o nginx tenha sido alterado recentemente para permitir que a função add_header padrão substitua o tipo de conteúdo:http://wiki.nginx.org/HttpHeadersMoreModule

Se você quiser fazer o contrário (ou seja, o URI original não contém extensão e o sistema de arquivos contém), tente substituir $request_uri por $uri, e a ordem de antes/depois de try_files pode ser importante

informação relacionada