
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.png
terá image/png
um cabeçalho de tipo de conteúdo e $uri.bin
terá application/octet-stream
.
Problema: não sei como determinar file
qual try_files
foi 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