Пару вопросов по location

diem diem at pochta.ru
Mon Nov 9 22:28:23 MSK 2009


Борис Долгов пишет:
> Добрый день!
>
> 9 ноября 2009 г. 18:46 пользователь diem <diem at pochta.ru> написал:
>   
>> Версия nginx - 0.7.63.
>> 1) Очень было бы неплохо иметь возможность применять alias в именованных
>> локэйшенах.
>>     
> А как alias должен определять, какая часть URI - название папки, а
> какая - уже имя запрашиваемого файла? В named location это не
> указывается, и, получается, единственный логичный способ действия -
> использовать alias так же, как root.
>
>   
>> 2) Как можно реализовать такое:
>>   Для примера есть location
>>
>>       location ^~ /some_path/ {
>>           auth_basic            "ACCESS DENIED";
>>           auth_basic_user_file  /home/user/.passwd/sample_pass_file;
>>       }
>>
>>   мне  нужно обработать запрос а потом перенаправить его дальше,
>>
>>       location ~ \.php$ {
>>           fastcgi_pass   unix:/var/run/spawn-fcgi.sock;
>>           fastcgi_param  SCRIPT_FILENAME
>>  /home/user/site$fastcgi_script_name;
>>           include fastcgi_params;
>>       }
>>
>>   но чтобы текущий блок location (^~ /some_path/ ) игнорировался и запрос
>> попал в (~ \.php$).
>>   Таким образом комбинируя параметры, что-то похожее на include, но по
>> локэйшенам.
>>     
>
> Насколько я понимаю, в этом случае можно воспользоваться вложенными location:
> location /some_path/ {
>     auth_basic ....;
>     location ~ \.php$ {
>         fastcgi_pass ...;
>     }
> }
>
>   
>> 3) Можно ли направить запрос в именованный location, не под средством
>> try_files и error_page, а на прямую, чтоб срабатывало
>>   без каких либо условий, во всех случаях ?
>>   Фактически тоже самое что и во втором пункте, но с именованными @
>> локэйшенами.
>>     
> На данный момент такой директивы нет. Можно писать error_page 4xx =
> @named_location и выдавать return 4xx в location, где требуется
> обработать запрос.
>
>
>   
Спасибо, очень доходчиво.
Про вложенные location почемуто не знал, удобно.

С alias в named location тоже ясно.
Использовал rewrite ... break; и root в место alias.
Но показалось странным, что после того, как я указал break,
rewrite сработал снова уже для uri c подставленным index (регулярка 
подошла и для него).
Хотя по логике все последующие rewrite не должны были работать после break;





More information about the nginx-ru mailing list