<div dir="ltr">Максим, большое спасибо.<div><div>С патчем все работает как надо.</div></div><div>А какова вероятность, что этот патч попадет в mainline?</div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-04-28 22:31 GMT+04:00 Maxim Dounin <span dir="ltr"><<a href="mailto:mdounin@mdounin.ru" target="_blank">mdounin@mdounin.ru</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello!<br>
<div class=""><br>
On Mon, Apr 28, 2014 at 01:22:08PM +0400, Vadim Lazovskiy wrote:<br></div>
<div class=""><br>
> Вопрос. Откуда берется домен в имени файла и как это побороть?<br>
<br>
</div>Выглядит как баг regex location + alias + limit_except/if.<br>
Собственно, для случая if он уже давно задокументирован на<br>
<a href="http://wiki.nginx.org/IfIsEvil" target="_blank">http://wiki.nginx.org/IfIsEvil</a>.<br>
<br>
Патч, видимо, какой-то такой:<br>
<br>
# HG changeset patch<br>
# User Maxim Dounin <<a href="mailto:mdounin@mdounin.ru">mdounin@mdounin.ru</a>><br>
# Date 1398709755 -14400<br>
#      Mon Apr 28 22:29:15 2014 +0400<br>
# Node ID cf4f92f40290c9d3b8a8fb8cf836d3ebd16224f5<br>
# Parent  539635cb8e98063b116555bdfd0c5ccfbfa8f184<br>
Fixed alias in regex locations with limit_except/if.<br>
<br>
The ngx_http_map_uri_to_path() function uses clcf->regex to detect if<br>
it's working within a location given by a regular expression.  Its<br>
behaviour was incorrect due to clcf->regex being false in implicit locations<br>
created by if and limit_except.  Fix is to preserve clcf->regex within<br>
implicit locations.<br>
<br>
diff --git a/src/http/modules/ngx_http_rewrite_module.c b/src/http/modules/ngx_http_rewrite_module.c<br>
--- a/src/http/modules/ngx_http_rewrite_module.c<br>
+++ b/src/http/modules/ngx_http_rewrite_module.c<br>
@@ -583,6 +583,7 @@ ngx_http_rewrite_if(ngx_conf_t *cf, ngx_<br>
     clcf = ctx->loc_conf[ngx_http_core_module.ctx_index];<br>
     clcf->loc_conf = ctx->loc_conf;<br>
     clcf->name = pclcf->name;<br>
+    clcf->regex = pclcf->regex;<br>
     clcf->noname = 1;<br>
<br>
     if (ngx_http_add_location(cf, &pclcf->locations, clcf) != NGX_OK) {<br>
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c<br>
--- a/src/http/ngx_http_core_module.c<br>
+++ b/src/http/ngx_http_core_module.c<br>
@@ -4597,6 +4597,7 @@ ngx_http_core_limit_except(ngx_conf_t *c<br>
     pclcf->limit_except_loc_conf = ctx->loc_conf;<br>
     clcf->loc_conf = ctx->loc_conf;<br>
     clcf->name = pclcf->name;<br>
+    clcf->regex = pclcf->regex;<br>
     clcf->noname = 1;<br>
     clcf->lmt_excpt = 1;<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
--<br>
Maxim Dounin<br>
<a href="http://nginx.org/" target="_blank">http://nginx.org/</a><br>
<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">
Best Regards,<br><div>Vadim Lazovskiy</div></div>
</div></div>