Os arquivos estáticos Nginx excluem uma ou algumas extensões de arquivo

1

Estou exibindo um site estático por meio do nginx.

    location ~* \.(avi|bin|bmp|dmg|doc|docx|dpkg|exe|flv|gif|htm|html|ico|ics|img|jpeg|jpg|m2a|m2v|mov|mp3|mp4|mpeg|mpg|msi|pdf|pkg|png|ppt|pptx|ps|rar|rss|rtf|swf|tif|tiff|txt|wmv|xhtml|xls|xml|zip)$ {
        root /var/www/html1;
        access_log off;
        expires 1d;
    }

E meu objetivo é excluir solicitações como http://connect1.webinar.ru/converter/task/ . A visualização completa é como http://mydomain.tld/converter/task/setComplete/fid/34330/fn/7c2cfed32ec2eef6788e728fa46f7a80.ppt.swf . Apesar do fato dessas URLs terminarem em tal formato, elas não são estáticas, mas solicitações de script falsas, então eu tenho um problema com elas.

Qual é a melhor maneira de fazer isso? Como posso adicionar uma exclusão para este URL ou talvez eu possa excluir a extensão específica do arquivo (.ppt.swf, pptx.swf) da lista desse local do Nginx?

Obrigado.

    
por Evgeniy Yablokov 09.07.2012 / 08:13

2 respostas

1
location ~* \.(?:avi|bin|bmp| ... |(?<!\.pptx\.|\.ppt\.)swf)$ {
    root /var/www/html1;
    access_log off;
    expires 1d;
}

.

$ man pcrepattern
$ man pcresyntax
    
por 09.07.2012 / 14:16
1

Como você está usando expressões regulares em seu local para arquivos estáticos, basta adicionar !pptx?\.swf condition a ele e excluir a condição swf

Sua localização ficará assim:

location ~* \.(avi|bin|bmp| ... |!pptx?\.swf)$ {
        root /var/www/html1;
        access_log off;
        expires 1d;
}

E não se esqueça de adicionar local separado para *.swf arquivos:

location ~* [0-9a-z]*\.swf$
        root /var/www/html1;
        access_log off;
        expires 1d;
}
    
por 09.07.2012 / 12:52