Minha configuração usa um mapa para definir Expires
cabeçalhos diferentes para vários arquivos estáticos (com base no tipo MIME). Para conteúdo com proxy ( ), eu uso um cabeçalho uwsgi_pass
estático :Expires
map $sent_http_content_type $expires {
default off;
text/html 7d;
text/css 180d;
application/font-woff2 1y;
application/pdf 1y;
~image/ 1y;
}
server {
listen 443 ssl http2;
server_name example.com;
location / {
uwsgi_pass django;
expires 7d;
}
location ~ ^/(css|fonts|images|pdf|html)/ {
root /var/www/django/static/;
expires $expires;
}
}
Usar o mapa (por meio da $expires
variável) para conteúdo com proxy não funciona. Existe alguma maneira do nginx identificar o tipo mime de conteúdo com proxy para fazer isso funcionar?
location / {
uwsgi_pass django;
expires $expires;
}
(Editar) Como Alexey sugeriu, eu fiz isso:
map $upstream_http_content_type $expires2 {
default off;
text/html 2d;
text/plain 20d;
text/css 180d;
}
location / {
uwsgi_pass django;
expires $expires2;
}
Infelizmente, ainda não há nenhum Expires
cabeçalho adicionado ao conteúdo entregue via uwsgi.
A solução foi fornecida por Alexey e Richard nos comentários. Tive que usar uma variável nginx diferente e um regex para (pelo menos) a entrada do mapa para arquivos HTML: