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

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


On Sun, 22 May 2005, Dmitry Kondratyev wrote:

> Serge wrote:
>> 21.05.05, Dmitry Kondratyev<null at bikeman.ru> написал(а):
>> 
>>> Наступил тут. :-)
>>> 
>>> есть
>>> location / { proxy_pass ... }
>>> location /dir { alias ... }
>>> 
>>> Так вот, если дёргаю /dir или /dir/file, то всё хорошо и файл берётся из
>>> указанного альясом места, а вот если дёргаю /dir.php или /dir_foo.php,
>>> то оно почему-то говорит 404 вместо того, чтобы проксировать. Или я
>>> чего-то непонимаю, или это всё же грабли. :-) nginx 0.1.28.
>>> 
>>> PS Почитал ещё раз мануал насчёт location - вроде так и должно быть и
>>> всё даже правильно, т.к. урл проверяется до максимального совпадения, но
>>> конструкция вроде
>>> 
>>> location ~ ^/dir(/.*)?$ { alias ... } даёт 404 на /dir/...

Это легко может быть, так как сочетание регулярного выражения в location
и alias сейчас не поддерживается. И я не знаю, делать ли поддержку,
когда ту же функциональность можно получить с помощью rewrite.

>>> Вижу вариант только описать локейшн вроде ^/dir[^/].+ или что-нибудь
>>> вроде того отдельно на проксирование - скорей всего так оно заработает.
>>> Но как-то криво это и неправильно на мой взгляд. Попроще никак?
>> 
>> location / { proxy_pass ... }
>> location /dir/ { alias ... }
>> 
>> По моему, так проще.
>> 
> Это я уже пробовал - ее работает так. 404 на непроксируемый контент.

Что именно пробовал - "location /dir" или "location /dir/" ? Это разные
вещи. /dir.php и /dir_foo.php попадают под /dir, но не попадют под /dir/.


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





More information about the nginx-ru mailing list