Редирект с баланcингом
Maxim Dounin
mdounin at mdounin.ru
Fri Sep 26 17:06:01 MSD 2008
Hello!
On Fri, Sep 26, 2008 at 06:34:17PM +0600, Rauan Maemirov wrote:
[...]
>> if ($remote_addr ~ '^\d+\.\d+\.(\d+)') {
>> set $net $1;
>> rewrite ^ http://site$site.example.com/one;
>> }
Или даже так:
if ($remote_addr ~ '^\d+\.\d+\.\d*[02468]\.') {
rewrite ^ http://site1.example.com/one;
}
if ($remote_addr ~ '^\d+\.\d+\.\d*[13579]\.') {
rewrite ^ http://site2.example.com/one;
}
Мапов при этом не нужно вообще.
Править регекспы по вкусу - приведённые выше делают балансировку
по предпоследнему октету ip (т.е. два пользователя из одной /24
сети попадут на один и тот же сервер).
Maxim Dounin
>>
>> 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
>>>>
>>>>
>>>>
>>
More information about the nginx-ru
mailing list