Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Как правильно задать ло кейшн
On Thu, Dec 17, 2009 at 05:16:38PM +0300, Maxim Dounin wrote:
> Hello!
>
> On Thu, Dec 17, 2009 at 04:30:58PM +0300, Андрей Бойко wrote:
>
> > Добрый день.
> >
> > Есть локейшн
> > location ~*
> > ^.+\.(swf|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|wmv|avi|asp)$
> > {
> > ssi on;
> > root /usr/local/www/htdocs;
> > expires 24h;
> > }
> > Он призван отдавать статику напрямую
> > Кто-то умный загрузил кучу файлов вида xxx.GIF, и для этих файлов локейшн
> > не срабатывает. Как ему правильно дать понять, что регистр может быть любой?
>
> http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#location
>
> Там достаточно однозначно написано, что "~*" - это caseless match,
> указанный location должен срабатывать.
>
> То, что он не срабатывает - это бага, появилось где-то в 0.8.*,
> сейчас буду смотреть подробнее.
>
> Quick workaround - поставить caseless явно в регулярное выражение:
>
> location ~ (?i)\.(swf|gif|...)$ {
> ...
> }
Патч. Появилось в 0.8.25.
--
Игорь Сысоев
http://sysoev.ru
Index: src/http/ngx_http_core_module.c
===================================================================
--- src/http/ngx_http_core_module.c (revision 2709)
+++ src/http/ngx_http_core_module.c (working copy)
@@ -2588,6 +2588,8 @@
#if (NGX_HAVE_CASELESS_FILESYSTEM)
rc.options = NGX_REGEX_CASELESS;
+#else
+ rc.options = caseless;
#endif
clcf->regex = ngx_http_regex_compile(cf, &rc);
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|