Re: Редирект с баланcингом

Rauan Maemirov rauan1987 at gmail.com
Fri Sep 26 16:34:17 MSD 2008


Вот теперь до меня дошло. Спасибо.

2008/9/26 Maxim Dounin <mdounin at mdounin.ru>

> Hello!
>
> On Fri, Sep 26, 2008 at 01:11:31PM +0600, Rauan Maemirov wrote:
>
>  Если хочется получить именно редирект, и при этом с хешированием по
>>>
>> ip-адресам - напишите простое хеширование на >if'ах/map'ах, либо на
>> встроенном perl'е.
>>
>> Пытаюсь сделать на map'ах. Но не пойму как написать  "простое хеширование
>> на
>> if'ах/map'ах". Так как у меня нужно редиректить только один location, map
>> выдает ошибки...
>>
>>   map $uri $new {
>>       /one   http://site1.example.com/one/;
>>       /one   http://site2.example.com/one/;
>>   }
>>
>
> А в чём смысл такой конструкции?  Что, есть надежда что засовывание в
> ассоциативный массив двух значений с одним и тем же ключём приведёт к тому
> что они волшебным образом начнут возвращаться по очереди в зависимости от
> ip-адреса клиента и погоды на марсе?
> Мапы надо делать не на $uri, а на [части] ip. И потом использовать
> результат в rewrite.  Как-то так:
>
> map $net $site {
>    0  1;
>    1  2;
>    2  1;
>    3  2;
>    ...
> }
>
> location /one {
>    if ($remote_addr ~ '^\d+\.\d+\.(\d+)') {
>        set $net $1;
>        rewrite ^ http://site$site.example.com/one;
>    }
> }
>
> Maxim Dounin
>
>
>
>
>> 2008/9/25 Maxim Dounin <mdounin at mdounin.ru>
>>
>>  Hello!
>>>
>>> On Thu, Sep 25, 2008 at 06:05:32PM +0600, Rauan Maemirov wrote:
>>>
>>>  Здравствуйте.
>>>
>>>>
>>>> Помогите, пожалуйста, организовать редирект.
>>>>
>>>> В сервере example.com есть апстрим.
>>>>
>>>> upstream site {
>>>>      ip_hash;
>>>>
>>>>      server   site1.example.com;
>>>>      server   site2.example.com;
>>>>  }
>>>>
>>>> и есть location
>>>>
>>>>      location ^~ /one {
>>>>          proxy_pass     http://site/one;
>>>>          proxy_redirect default;
>>>>      }
>>>>
>>>> Т.е. при обращении на example.com/one он должен редиректиться на
>>>> site1.example.com/one или site2.example.com/one. rewrite не подходит,
>>>> так
>>>> как мне нужен редирект с ip_hash.
>>>>
>>>>
>>> Редирект - это возврат http-ответа 302 Found (либо 301, 307), его делает
>>> именно rewrite.  То, что делает proxy_pass - это проксирование.
>>>
>>> Если хочется получить именно редирект, и при этом с хешированием по
>>> ip-адресам - напишите простое хеширование на if'ах/map'ах, либо на
>>> встроенном perl'е.
>>>
>>>  Получаю "worker_connections is not enough while connecting to upstream"
>>>
>>>> или
>>>> "no live upstreams while connecting to upstream".
>>>>
>>>> Насколько я понял, он зацикливается. Но никак не могу понять почему.
>>>>
>>>>
>>> Судя по всему - site1.example.com и site2.example.com указывают на ту же
>>> машину, и при этом запрос попадает на обработку к тому же proxy_pass'у и
>>> так
>>> далее - пока у nginx'а не кончаться соединения.
>>>
>>> Maxim Dounin
>>>
>>>
>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20080926/3e532640/attachment.html>


More information about the nginx-ru mailing list