O Nginx analisa o nome do arquivo final e conclui que a extensão é css?version=3.3.1
. Ele aparece no bloco types
e não encontra correspondência, então o valor de default_type
é usado.
Se você tiver todos os arquivos do tipo CSS em uma pasta e todos os arquivos do tipo SVG em outro - ou se o caminho URI para diferentes tipos for exclusivo, você poderá definir o tipo mime para todos os arquivos em um local específico:
location /css {
types { }
default_type text/css;
}
Na primeira linha da sua pergunta, você indica que há um diretório com muitos arquivos, presumivelmente com diferentes tipos de mime.
Você pode usar uma diretiva map
com uma expressão regular para identificar o tipo mime dos arquivos. Você precisará adicionar uma linha para cada tipo de arquivo contido no diretório. Meu exemplo contém apenas alguns. O arquivo /etc/nginx/mime.types
contém os tipos que o Nginx geralmente está configurado para reconhecer, mas você só precisará adicionar os tipos de arquivos que você arquiva atualmente neste diretório.
map $request_uri $type {
default application/octet-stream;
~*\.css text/css;
~*\.js application/javascript;
}
server {
...
location /some/path {
default_type "";
types { }
add_header Content-Type $type;
}
}
AVISO LEGAL: Este é provavelmente um hack, mas parece funcionar.
Configurar o default_path
para uma string vazia junto com um bloco types
vazio, impede que o Nginx adicione seu próprio cabeçalho Content-Type.
Consulte este documento para obter detalhes sobre a diretiva map
.