Re: Злощасный try_files и alias

Maxim Dounin mdounin на mdounin.ru
Ср Фев 24 13:12:54 UTC 2016


Hello!

On Wed, Feb 24, 2016 at 01:45:27AM +0200, Alex Domoradov wrote:

> https://trac.nginx.org/nginx/ticket/97
> 
> подскажите, до сих пор нет решения этой проблемы?

Проблемы из этого тикета, не являющиеся дискуссионными, в 
современных версиях nginx'а решены.  По опыту - если вы пришли к 
выводу, что ваши проблемы из-за этого тикета, то скорее всего вы 
просто перемудрили в конфиге.

> Есть
> 
> server {
>    root /vhosts/api.example.net/public_html;
> 
>    location ~ /api/2.0 {
>       alias /vhosts/api.example.net/api/v2.0/public_html;
>       try_files $uri $uri/ /index.php?$query_string;
>    }
> }
> 
> при таком конфиге и обращении к /api/1.0 файлы ищутся в /vhosts/
> api.example.net/public_html, вместо /vhosts/
> api.example.net/api/v2.0/public_html

При обращении к /api/1.0 они и должны искаться от root'а сервера, 
т.к. location'а для /api/1.0 у вас не описано.

При обращении к /api/2.0, вероятно, происходнить будет не то, что 
вы хотели, т.к. в location'е, заданном с помощью регулярного 
выражения, alias определяет полный путь к файлу, а try_files к 
этому пути добавляет фрагменты.  Вам, вероятно, надо убрать "~" из 
location'а, сделав его обычным префиксным, и всё заработает так, 
как хотелось.

-- 
Maxim Dounin
http://nginx.org/



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