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
|