vhosting and map { }

Igor Sysoev is at rambler-co.ru
Wed Jun 21 16:29:35 MSD 2006


On Wed, 21 Jun 2006, Igor Sysoev wrote:

> On Wed, 21 Jun 2006, Dmitry Morozovsky wrote:
>
>> On Wed, 21 Jun 2006, Igor Sysoev wrote:
>> 
>> IS> Вот это вот
>> IS>         server_name     $http_host;
>> IS> я не заметил. Так нельзя.
>> 
>> Ага. то есть вообще server_name не указывать.
>
> Можно так:
>    server_name  _ ;
>
>> IS>
>> IS> > 	location = / {
>> IS> > 	        root /www/$sroot/html;
>> IS> > 	        index index.html index.shtml index.htm index.php;
>> IS> > 	}
>> IS> >        location / {
>> IS> >                proxy_pass              http://127.0.0.1;
>> IS> >        }
>> IS> >    }
>> IS> >
>> IS> > фигу - в качестве $document_root пишет root от первого из описанных
>> IS> > серверов.
>> IS> >
>> IS> > Где я не вижу очевидного?
>> IS>
>> IS> Вырожденный сервер нужно поместить в начало. Или во всех listen
>> IS> для него указать default.
>> 
>> Да, map принялся хвататься. Зато почему-то не раскрывается переменная:
>> 
>> root /$sroot/html;
>> 
>> directory index of "/$sroot/html/" is forbidden
>
> Это багофига: если ни одни индекс не найден, то в сообщении $sroot
> не раскрывается. Буду лечить.

Прилагаемый патч исправляет сообщение.


Игорь Сысоев
http://sysoev.ru
-------------- next part --------------
--- src/http/ngx_http_core_module.c	Mon May 29 19:21:59 2006
+++ src/http/ngx_http_core_module.c	Wed Jun 21 16:26:02 2006
@@ -519,6 +519,7 @@
 ngx_http_core_run_phases(ngx_http_request_t *r)
 {
     ngx_int_t                   rc;
+    ngx_str_t                   path;
     ngx_http_handler_pt        *h;
     ngx_http_core_loc_conf_t   *clcf;
     ngx_http_core_main_conf_t  *cmcf;
@@ -642,11 +643,10 @@
 
     if (r->uri.data[r->uri.len - 1] == '/' && !r->zero_in_uri) {
 
-        clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
-
-        ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
-                      "directory index of \"%V%V\" is forbidden",
-                      &clcf->root, &r->uri);
+        if (ngx_http_map_uri_to_path(r, &path, 0) != NULL) {
+            ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
+                          "directory index of \"%V\" is forbidden", &path);
+        }
 
         ngx_http_finalize_request(r, NGX_HTTP_FORBIDDEN);
         return;


More information about the nginx-ru mailing list