ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Re[2]: Повторное использован ие map при изменении исходной пере менной



Запрос:
http://myhost/app1/request1.php

Конфиг (с рудиментами, но рабочий):
pid /var/run/nginx.pid;
events {worker_connections 4000;}
user nobody nobody;
error_log /var/log/nginx/error.log error;
http {
resolver 10.192.168.16;
root /var/www/nginx/html;
log_format devel '$msec|$request_time|$bytes_sent|$remote_addr|$status|$time_local|'
'$request_method http://$http_host:$server_port$request_uri $server_protocol|$http_referer|$http_user_agent|$ext_point|$group';
access_log /var/log/nginx/access.log devel;
map "${ext_host}/${ext_point}" $group {
  #include /etc/nginx/maps/group.txt;
  myhost/default public;
}
map "${ext_host}/${ext_point}" $group1 {
  #include /etc/nginx/maps/group.txt;
  myhost/default public;
}
server {
set $ext_host $http_host;
if ( $http_host ~* ^([^:]+)\:.*$ ) { set $ext_host $1; }
set $uri_x $request_uri;
if ($uri_x ~ ^/+(.*)$) { set $ext_point default; set $request_x $1; }
if ($uri_x ~ ^/+([^/]+)/+(.*)$) { set $ext_point $1; set $request_x $2; }
set $tmp $group:$uri_x; # doesn't work
#set $tmp $group1:$uri_x; # does work
if ($tmp ~* ^:/+(.*)$ ) { set $ext_point default; set $request_x $1; }
if ($group = "") { set $group "forbid"; }
if ($int_uri = "") { set $int_uri "localhost:8000"; }
if ($group = public) { set $proxy_url http://$int_uri/$request_x; break; }
if ($group = redirect) { rewrite .* http://$int_uri/$request_x permanent; break; }
if ($group = forbid) { return 403; }
return 403;
location / { proxy_pass $proxy_url; }
}
server {
        access_log off;
        listen 8000;
        location / {
                root /var/www/html;
        }
}
}

Лог:
1248425804|0|322|10.192.168.141|404|2009.07.24 12:56:44|GET http://myhost:80/app1/request1.php HTTP/1.1|-|Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)|default|public
1248425818|0|322|10.192.168.141|403|2009.07.24 12:56:58|GET http://myhost:80/app1/request1.php HTTP/1.1|-|Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)|default|forbid

Первая строка - если set $tmp $group1:$uri_x;
вторая - если set $tmp $group:$uri_x;.

24 июля 2009 г. 12:08 пользователь Kirill A. Korinskiy <catap+nginx@xxxxxxxx> написал:
At Fri, 24 Jul 2009 11:30:48 +0400,
Vladimir Latyshev <latysheff@xxxxxxxxx> wrote:
>
> Я уже приводил его в ветке чуть выше.
> Суть в том, что обрабатываются урлы вида http://host1/app1/request1.php. В map ищется сначала группа для host1/app1, и если не находится, то для host1/default.
>
> Можно в качестве примера вот так:
> map "${ext_host}/${ext_point}" $group {
>   host1/app2 public;
>   host1/default public;
>   host2/app1 public;
> }
>

Странно то, что у меня не кешируется map.

Можете сделать пример конфига в котором с моим патчем не работает
подобное?

Ну и примеры запросов на которых вы получаете не то что хотите :)

--
wbr, Kirill




 




Copyright © Lexa Software, 1996-2009.