забавная грабля

Igor Sysoev is at rambler-co.ru
Sun May 22 11:42:15 MSD 2005


On Sun, 22 May 2005, Dmitry Kondratyev wrote:

> Dmitry Kondratyev wrote:
>>>>>> Вижу вариант только описать локейшн вроде ^/dir[^/].+ или что-нибудь
>>>>>> вроде того отдельно на проксирование - скорей всего так оно заработает.
>>>>>> Но как-то криво это и неправильно на мой взгляд. Попроще никак?
>>>>> 
>>>>> location / { proxy_pass ... }
>>>>> location /dir/ { alias ... }
>>>>> 
>>>>> По моему, так проще.
>>>>> 
>>>> Это я уже пробовал - ее работает так. 404 на непроксируемый контент.
>>> 
>>> Что именно пробовал - "location /dir" или "location /dir/" ? Это разные
>>> вещи. /dir.php и /dir_foo.php попадают под /dir, но не попадют под /dir/.
>> 
>> Я понял почему 404 было - когда пишешь /dir/ для альяса, то nginx не делает 
>> редирект при запросе GET /dir на /dir/ и запрос проксируется на бэкенд. При 
>> запросе GET /dir/ всё хорошо. Может добавить редирект, чтобы дополнительных 
>> локейшнов не городить? У меня похожие грабли во многих местах, как 
>> оказалось, расставлены. Но не на все довелось наступить пока. :-)
>
> А вот ещё проблема - в мануале про альяс не нашёл, потому не знаю считать ли 
> такое поведение нормальным:
>
> location / { proxy_pass ... }
> location = /dir { alias /dir }
> location /dir/ { alias /dir }
>
> Редирект при запросе /dir на /dir/ делается, а потом отплёвывается 404.
>
> Если вместо последней строчки написать
>
> location /dir/ { alias /dir/ }
>
> то всё приходит в норму.

Да, последняя строка - правильная. alias полностью заменяет в URI строку,
указанную в location.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list