Re: "вложенные location'ы - это наше всё"

Igor Sysoev igor на sysoev.ru
Сб Июл 23 15:07:47 UTC 2011


On Sat, Jul 23, 2011 at 05:38:16PM +0300, Gena Makhomed wrote:
> On 23.07.2011 10:18, Igor Sysoev wrote:
> 
>  >      location /index.php {
>  >
>  >          location = /index.php {
>  >              fastcgi_pass   ...
>  >              include        fastcgi_params;
>  >              fastcgi_param  SCRIPT_FILENAME  /path/to/files/index.php;
>  >              fastcgi_param  QUERY_STRING     $args;
>  >          }
>  >
>  >          location ~ ^/index.php(/.*)$ {
>  >              fastcgi_pass   ...
>  >              include        fastcgi_params;
>  >              fastcgi_param  SCRIPT_FILENAME  /path/to/files/index.php;
>  >              fastcgi_param  QUERY_STRING     do=$1;
>  >          }
>  >
>  >          return 404;
>  >      }
> 
> учитывая, что "вложенные location'ы - это наше всё" (с) Igor Sysoev
> (полная копия сообщения - http://www.lexa.ru/nginx-ru/msg34286.html)
> 
> в связи с этим вопрос: вышеприведенный фрагмент конфига
> наверное можно переписать и более эффективным способом?
> 
> location /index.php {
> 
>      location = /index.php {
>          fastcgi_pass   ...
>          include        fastcgi_params;
>          fastcgi_param  SCRIPT_FILENAME  /path/to/files/index.php;
>          fastcgi_param  QUERY_STRING     $args;
>      }
> 
>      fastcgi_pass   ...
>      include        fastcgi_params;
>      fastcgi_param  SCRIPT_FILENAME  /path/to/files/index.php;
>      fastcgi_param  QUERY_STRING     do=$1;
> }
> 
> ведь каждый запрос всегда обрабатывается в одном и только в одном
> location`е, и если он уже попал в /index.php - то дальше есть
> всего два варианта - или он точно равен /index.php или нет.

Нет,
          location ~ ^/index.php(/.*)$ {
вытаскивает значение для QUERY_STRING.


-- 
Igor Sysoev



Подробная информация о списке рассылки nginx-ru