Re[5]: очень много клиентов

Igor Sysoev is at rambler-co.ru
Thu Feb 16 16:17:17 MSK 2006


On Thu, 16 Feb 2006, Anton Maksimenkov wrote:

>> А сколько одновременных Апачей работало до перехода на nginx ?
>> Какой размер ядерного TCP буфера отправки ?
>> Насколько я понимаю, в данном случае появился лишь оверхед от
>> проксирования nginx'ом и больше ничего. Возможно ли отдавать статику
>> nginx'ом без проскирования на Апач ?
>
> На том нагруженном сайте - в среднем работает по 400-600 апачей, >60
> запросов в сек. Размер ядерного буфера... не менял, и к своему стыду
> не знаю. После перехода на nginx появилось существенное снижение
> отжираемой памяти и некоторое снижение нагрузки. Хотя я потом
> задумался, не потому ли, что при том было пропорциональное снижение
> трафика.
>
> Держать апач на бакэнде заставляют следующие функции:
>
> 1) отключение неплательщиков (путём перенаправления на заданную
> страничку), реализовано так
>
> RewriteEngine   On
> RewriteMap      block-domain-ru        txt:/var/www/block.domain.ru
> RewriteRule     ^(/([^/]+)/.*)$        ${block-domain-ru:$2|$1}
>
> файлик /var/www/block.domain.ru пополняется записями
> firma74         http://domen.ru/pay.html
> ...

Это можно сделать примерно так:

http {
     map  $http_host  $blocked  {
          firma74     http://domen.ru/pay.html;
          ...
     }

     server {
         if ($blocked) {
             rewrite  ^   $blocked   redirect;
         }

         ...
     }


> 2) layout'ы, И верхний И нижний, реализовано
>
>        LayoutDefaultHandlers   Off
>        LayoutHandler   text/html
>        LayoutHandler   text/plain
>        LayoutHeader    /var/www/domen.ru/header.html
>        LayoutFooter    /var/www/domen.ru/footer.html
>
> критично держать ОБА.

Но для картинок-то они не нужны ?

> 3) Хотя это вероятно УЖЕ можно средствами nginx реализовать -
> ограничить превращение сайта во "внешнее хранилище + внешний трафик"
> картинок для левых сайтов, реализовано простым отсевом тех, кто без
> реферера их тянет
>
> RewriteCond    %{HTTP_REFERER} !^http://[0-9a-z][0-9a-z-]*[0-9a-z]\.domain\.ru$ [NC]
> RewriteCond    %{HTTP_REFERER} !^http://[0-9a-z][0-9a-z-]*[0-9a-z]\.domain\.ru/.*$ [NC]
> RewriteRule     ^.*\.(gif|jpeg|jpg)$    - [F,L,NC]
>
> это вобщем уже не критичный момент, однако были прецеденты, трафик
> фигачил "не по делу", да и нагрузка  :-))

http://sysoev.ru/nginx/docs/http/ngx_http_referer_module.html

> 4) Самое основное, почему, даже имея всё это, в апаче была введена
> схема фронтенд-бакэнд, это необходимость упрощенного конфига для
> поддержки сайтов типа *.domen.ru.
> То есть для vasya.domen.ru нужно чтобы DocumentRoot был скажем
> /var/www/domen.ru/vasya, а для ivan.domen.ru DocumentRoot был
> /var/www/domen.ru/ivan
> С апачом это удалось сделать только путем разбора на фронтенде
> HTTP_HOST и передачи имени ПОДДОМЕНА в строке URI бакэнду, реализовано
> на фронтенде так
>
> RewriteCond     %{HTTP_HOST} ^(.+)\.domen\.ru.*$ [NC]
> RewriteRule     (.*) http://backend.domen.ru.int/%1$1 [L,P]
> RewriteRule     .*   http://domen.ru

Я правильно понимаю, что сейчас сделано так: - Apache -> backend ?

       location / {
           set  $hostname  main;

           if ($http_host ~* "^(.+)\.domen\.ru.*$") {
               set  $hostname  $1;
           }

           rewrite   ^(.+)$  /$hostname$1   break;

           proxy_pass   http://backend.domen.ru.int;
       }


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list