ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



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



 




Copyright © Lexa Software, 1996-2009.