ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: random_index



Здравствуйте, Maxim.

Вы писали 3 ноября 2011 г., 19:31:04:

>> Помогите, пожалуйста, разобраться с random_index.
>> 
>> server {
>>     listen      127.0.0.1:80;
>>     server_name localhost;
>>     error_log   logs/error.log debug;
>> 
>>     location / {
>>         root   /common/example.org/www;
>>         index  index.html;
>>     }
>> 
>>     location ~ ^/banner(\d+)/$ {
>>         alias /common/example.org/adv/$1/;
>>         random_index on;
>>     }
>> }
>> 
>> При  запросе  /banner2/ получается 404-я ошибка, nginx пытается отдать
>> файл /common/example.org/www/banner2/1.html
>> 
>> Если  использовать  location ~ ^/banner(\d+)/ {} (без завершающего $),
>> то  nginx  делает  10 внутренних редиректов и "Redirection limit of 10
>> URL's reached"

> Если в директиве alias используются переменные, то она задаёт 
> полный путь к файлу, который надо использовать.
Максим,  объясните,  пожалуйста,  поподробнее.  Я  ж вроде и использую
полный путь.

> Должно сработать как-то так:

>     location ~ ^/banner(?<number>\d+)/(?<file>.*) {
>         alias /common/example.org/adv/$number/$file;
>         random_index on;
>     }
Это  немного  не  то. Если использовать ваш вариант, то получается что
рандомные  имена  файлов  (?<file>.*)  надо  генерить  на  бекенде.  А
хотелось бы использовать nginx для этой задачи.
По дебаг-логу видно что нгинкс сначала преобразовывает алиас, затем из
списка   файлов   в   получившейся  директории  выбирает рандомный, но
добавляет  выбранное  имя  файла  к  исходному (текущему?) uri, а не к
пути,  полученному  из  алиаса.  Потом  делается внутренний редирект и
начинается опять поиск нужного дlocation'a.
Вот  если  бы  выбранное  рандомом  имя  добавить  к  преобразованному
алиасу и остановиться на этом...
Пробовала написать break; но видимо оно не для internal redirect.

-- 
С уважением, Ольга Н.

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.