Re[2]: балансировка по параметру URL

Denis F. Latypoff denis на gostats.ru
Вс Фев 28 14:56:30 MSK 2010


Hello cat,

Sunday, February 28, 2010, 5:39:59 PM, you wrote:

> Alexander Kochetov Wrote:
> -------------------------------------------------------
>> В начале php-скрипта...
> нужно разгрузить php. от 300 запросов в секунду к серверу.
> отправлять каждый в fastcgi как-то накладно.

> вот черновой вариант (рабочий) того что нужно. 

> upstream backend
> {
>   #статика
>   server 127.0.0.1:81 weight=5;
>  
>  #php 
>  server 127.0.0.1:82;
> }

> #главный сервер (респределяющий)
> server
> {
>   listen 80;
>   #если пользователь test - отправить на backend-ы
>   if ($arg_user = test) {rewrite ^ /test;}
>   location /test
>   {
>     proxy_pass  http://backend/xml.php;
>   }
> }

> #backend выдачи из файла
> server
> {
>   listen 81;
>   location /
>   {
>     rewrite ^(.*).php$ /empty.xml last;
>   }
> }

> #backend выдачи из php
> server
> {
>   listen 82;
>   location ~ \.(php)$
>   {
>     fastcgi_pass   unix://tmp/php.sock;
>      .....
>   }
> }

> есть варианты сделать всё это без 2х дополнительных серверов backend-a?

Помоему, proxy_cache должен помочь.

location = /xml.php {
    if ($arg_user = 'test') {
        rewrite ^ /test last;
    }
    proxy_pass ...;
}

location = /test {
    proxy_pass ...;
    proxy_cache ...;
    proxy_cache_valid  30s;
}

как-то так.

-- 
Best regards,
 Denis                            mailto:denis at gostats.ru




Подробная информация о списке рассылки nginx-ru