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
|