ПРОЕКТЫ 


  АРХИВ 


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: настройка редирект ора



если у вас тупо рерайт сразу идёт, то директива location {} не нужна

server {
listen 80 default accept_filter=httpready rcvbuf=128k sndbuf=128k backlog=4096; #default и прочие параметры нужно указать *только* один раз, поведение сохранится для всех серверов, слушающих указанную пару адрес/порт #по поводу размеров rcvbuf и sndbuf лучше дополнительно проконсультироваться. в вашей ситуации имеет смысл делать их не более 8к или что-то вроде, т.к. вы картинко/контенто не раздаёте
  server_name requested_domain.tld;
  rewrite ^ http://target_domain.tld$request_uri;
}

всё

так-же, по-гуглите и тут в рассылке было, nginx обслуживающий одновременно 200 000 коннектов


On 19.11.2008, at 19:02, Sergey Shepelev wrote:

Большое спасибо.

2008/11/19 Igor Sysoev <is@xxxxxxxxxxxxx>

On Wed, Nov 19, 2008 at 01:40:15PM +0300, Sergey Shepelev wrote:

Компания - регистратор доменов предоставляет услугу HTTP redirect с юзерского домена на какой угодно адрес. Эту услугу обслуживает nginx на одном адресе, на одной машине.

Клиентов часто ДДоСят, поэтому редиректор тоже под большой нагрузкой
из-за
этого.

Доменов, с которых надо редиректить, примерно 500, это число будет расти,
но
достаточно медленно.

Задача nginx - максимально быстро вернуть редирект и принудительно
закрыть
соединение.

Есть ли аргументы в пользу "нестабильного" 0.7, например, он быстрее ищет
сервер в списке виртхостов?

0.7 в этом плане не особо отличается от 0.5.

Работающий nginx 0.5 давно настраивал плохо разбирающийся в nginx
человек,
поэтому присылать текущий конфиг смысла не вижу.

Значительного увеличения производительности удалось достигнуть за счет

    listen (ip):80 *default rcvbuf=2K backlog=128*;

можно ли здесь еще что-нибудь улучшить?

Учитывая, что практически все легальные запросы живых юзеров -
http://домен/ <http://xn--d1acufc/><http://xn--d1acufc/>,
будет ли смысл писать конфиг виртхоста, как

server {
 listen (ip):80;
 server_name vhost;
*  location = / { rewrite .* http://redirect.to/; }
*  location / { rewrite (.*) http://redirect.to/$1; }
}

Да, так будет немного лучше. Я предпочитаю такой вариант:

-  location = / { rewrite .* http://redirect.to/; }
+  location = / { rewrite ^  http://redirect.to/; }

но не знаю, насколько "^" отличается от ".*" по производительности. Возможно, они компилируются в одно и то же .


Спасибо. Кстати, разница между
1) один server, 400 if ( $host ~ vhost ) { redirect .*
http://redirect.addr/redirect; }
# да, я знаю что это плохо, но так было раньше, будет исправлено
и
2) много директив server, в каждой location = / { rewrite ^ http://redirect.to/; } location / { rewrite (.*) http://redirect.to/ $1; } ровно в два раза: 4500 и 9000 зап/сек соответственно.



Может быть, можно подкрутить *_buffer_size, *_timeout? Посоветуете? Может нужно отключить посыл каких-то заголовков?

**keepalive_timeout стоит 0.

reset_timedout_connection  on;


Это тоже стояло.



"Производительность" тестировалась c помощью ab -c 1000 -n 50000
http://vhost/
сейчас это 9к запросов/сек, но я чувствую, что можно больше.


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





 




Copyright © Lexa Software, 1996-2009.