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

Anton Maksimenkov engineer at hlebprom.ru
Thu Feb 16 15:46:40 MSK 2006


Hi, Igor.

> А сколько одновременных Апачей работало до перехода на 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
...

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]

это вобщем уже не критичный момент, однако были прецеденты, трафик
фигачил "не по делу", да и нагрузка  :-))

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
 
-- 
engineer






More information about the nginx-ru mailing list