Персональный
сайт
Игоря
Сысоева


 
english
обо мне
 
sysoev.ru
2014
2013
2012
2011
2010
2009
2008
2007
2006
2005
2004
2003
2002
 
nginx
 
mod_accel
mod_realip
mod_deflate
программирование
всякая всячина
windows
freebsd
apache
pppd
unix
web
 
 

2006

 

24.12.2006

nginx-0.5.5.

 
15.12.2006

nginx-0.5.4.

 
13.12.2006

nginx-0.5.3.

 
04.12.2006

nginx-0.5.1 и nginx-0.5.2.

 
04.12.2006

nginx-0.5.0.

 
27.11.2006

nginx-0.4.14.

 
15.11.2006

nginx-0.4.13.

 
31.10.2006

nginx-0.4.12.

 
25.10.2006

nginx-0.4.11.

 
23.10.2006

nginx-0.4.10.

 
13.10.2006

nginx-0.4.9.

 
11.10.2006

nginx-0.4.8.

 
10.10.2006

nginx-0.4.7. Модуль ngx_http_flv_module.

 
06.10.2006

nginx-0.4.6.

 
02.10.2006

nginx-0.4.4 и nginx-0.4.5.

 
26.09.2006

Сегодня Рамблер отмечает 10-летие. По этому поводу nginx-0.4.3 с поддержкой Solaris 10 event ports и модулем ngx_http_browser_module.

 
14.09.2006

nginx-0.4.1 и nginx-0.4.2.

 
30.08.2006

nginx-0.4.0.

 
28.08.2006

nginx-0.3.61.

 
18.08.2006

nginx-0.3.60.

 
16.08.2006

nginx-0.3.59.

 
14.08.2006

nginx-0.3.58.

 
09.08.2006

nginx-0.3.57.

Статья Некоторые малоизвестные возможности и особенности OpenSSL.

 
04.08.2006

nginx-0.3.56.

 
28.07.2006

nginx-0.3.55.

 
11.07.2006

nginx-0.3.54.

 
07.07.2006

nginx-0.3.53.

 
03.07.2006

nginx-0.3.52.

 
30.06.2006

nginx-0.3.51.

 
28.06.2006

nginx-0.3.50.

 
31.05.2006

nginx-0.3.49. Это последний релиз перед отпуском.

Несколько статей Алексея Ковырина о настройке nginx'а:

Статья Михаила Сгибнева, в частности, о настройке nginx'а в качестве IMAP/POP3 прокси сервера и настройке мониторинга с помощью Munin.

 
29.05.2006

nginx-0.3.48.

 
23.05.2006

nginx-0.3.47. Директива upstream.

 
11.05.2006

nginx-0.3.46.

 
06.05.2006

nginx-0.3.45 и проверка клиентских сертификатов.

 
04.05.2006

nginx-0.3.44.

 
26.04.2006

nginx-0.3.42 и nginx-0.3.43.

 
21.04.2006

nginx-0.3.41.

 
19.04.2006

Майский бюллетень безопасности FreeBSD прошлого года и нынешний меня, мягко говоря, несколько удивляют. Но если в прошлом году мифическое раскрытие информации на процессорах с включённым HTT ещё хоть как-то тянуло на проблемы с безопасностью, то нынешние три регистра математического сопроцессора — это уже просто смешно. И вся эта активность происходит на фоне того, что исправление действительно серьёзной ошибки в softupdates в security branch не попадает, потому что к безопасности отношения не имеет. Или, например, проблема в mmap(), для решения которой даже есть патч. Патч, по-видимому, не вписывается в концепцию VM, но зато у меня прекрасно работает уже второй год и машина не виснет. А на мифические уязвимости в HTT и сопроцессоре я чихать хотел.

nginx-0.3.40.

 
17.04.2006

nginx-0.3.39.

 
14.04.2006

nginx-0.3.38. Модуль ngx_http_dav_module. Несмотря на громкое название, модуль на данный момент не обрабатывает ни одного WebDAV-метода, а только два HTTP/1.1-метода — PUT и DELETE.

 
07.04.2006

nginx-0.3.37.

 
05.04.2006

nginx-0.3.36. Модуль ngx_http_addition_module.

 
22.03.2006

nginx-0.3.35.

 
21.03.2006

nginx-0.3.34.

По сообщению Алексея Тутубалина, если кликнуть в Чёрный квадрат, то с вероятностью 9.8% в строке "Server" заголовка ответа будет nginx.

 
15.03.2006

nginx-0.3.33.

 
11.03.2006

nginx-0.3.32.

 
10.03.2006

nginx-0.3.31.

 
22.02.2006

nginx-0.3.30.

 
20.02.2006

nginx-0.3.29.

 
19.02.2006

На днях ставил на домашний компьютер FreeBSD 6.1-BETA1 c кучей софта, среди прочего и Firefox 1.5, и обнаружил, что исправленный plugin LiveHTTPHeaders не доступен. Поэтому я сделал патч. Однако воспользоваться им не так просто, потому что нужно патчить файл в jar-архиве. Сначала нужно установить оригинальный LiveHTTPHeaders и убедиться, что закладка Headers в Page Info не работает. После этого закрываем Firefox и переходим в его профиль:

~/.mozilla/firefox/XXXXXXXX.default
(вместо XXXXXXXX будет случайный набор символов). В каталоге extensions должен быть каталог
{8f8fe09b-0bd3-4470-bc1b-8cad42b8203a}
Это такой идентификатор у plugin'а LiveHTTPHeaders. Переходим туда и выполняем следующие операции:
unzip chrome/livehttpheaders.jar content/PageInfoOverlay.js -d chrome
patch < ~/patch.livehttpheaders.txt
cd chrome/
zip -m livehttpheaders.jar content/PageInfoOverlay.js
Теперь можно запускать Firefox.

 
18.02.2006

nginx-0.3.28.

 
08.02.2006

nginx-0.3.27 и описание настройки хэшей.

 
03.02.2006

nginx-0.3.26.

 
01.02.2006

nginx-0.3.24 и nginx-0.3.25.

 
24.01.2006

nginx-0.3.23.

 
17.01.2006

nginx-0.3.22.

 
16.01.2006

nginx-0.3.21. Экспериментальный модуль ngx_http_perl_module.

Так как из-за разности в архитектурах nginx'а и Apache запускать mod_perl'овые модули всё равно не получится, то я решил достаточно вольно обойтись с mod_perl'овым API. Например, метода $r->finfo не будет, поскольку он использует специфику обработки запроса в Apache, а в nginx'е никакого выигрыша от него нет. Вместо метода $r->send_fd(fh) будет $r->sendfile(filename), использующий sendfile(), если это возможно. Пока методов немного.

 
13.01.2006

В презентации Майкла Рэдвина Hacking Apache HTTP Server at Yahoo! (здесь можно посмотреть то же самое в PDF или, для совсем любителей, в PPT) среди прочего описывается, как Yahoo! использует ядро FreeBSD в качестве акселератора для не самой лёгкой комбинации Apache/mod_php. Время общения Apache с клиентом сведено к минимуму — ровно для того, чтобы скопировать запрос и ответ: сначала запрос клиента полностью принимается accept-фильтром httpready, а затем весь ответ записывается в огромный, 224K, буфер сокета, после чего сокет сразу же закрывается (-DNO_LINGCLOSE). У этого метода есть и преимущества, и недостатки. Один из недостатков — суммарный объём данных, который можно использовать под буфера сокетов (mbuf clusters) около 360M, по крайней мере, во FreeBSD/i386 4.x с адресным пространством ядра в 1G. Это означает, что при среднем размере ответа в 50K одна машина может обслуживать примерно до 7,000 одновременных соединений. Впрочем, во FreeBSD 6.0 и на amd64 этот объём должен быть больше. Кроме того, адресное пространство ядра можно увеличить до 2G или даже до 3G. Одно из преимуществ — возможность быстро отдавать в большое TCP window клиента, но, с другой стороны, без keep-alive это окно приходится разгонять каждый раз заново.

 
12.01.2006

Алексей Тутубалин сделал архив списка рассылки nginx-ru с возможностью поиска.

 
11.01.2006

nginx-0.3.20.

 
08.01.2006

Уже не в первый раз вижу непонимание того, как используется sendfile() в неблокирующихся серверах. Люди считают, что весь файл передаётся за один системный вызов, и это и является его главным преимуществом. Это не так: передаётся только небольшая часть, которая может поместиться в буфер сокета, и число вызовов для передачи большого файла может быть достаточно большим. Зачем же тогда использовать sendfile() в таких серверах ?

  • sendfile() всё же экономит системные вызовы, так как файл не нужно предварительно считывать в адресное пространство сервера;
  • sendfile() уменьшает число копирований данных;
  • наконец, sendfile() позволяет использовать меньше физической памяти.

 
07.01.2006

В конфигурации nginx'а используется механизм переменных, который обладает несколькими свойствами. Во-первых, значения переменных вычисляются только в момент их использования, то есть, если переменная используется внутри одного location'а, то при обработке запросов в других location'ах она не будет вычисляться. Во-вторых, вычисленное значение переменной может кэшироваться в пределах запроса. В-третьих, во время исполнения запроса имена переменных не используются — каждой переменной присваивается численный индекс, по которому в массиве находится обработчик переменной или закэшированное значение. И, наконец, механизм переменных позволяет расширять функциональность nginx'а, не влияя на производительность остального кода, — собственно, модули ngx_http_geo_module, ngx_http_map_module и ngx_http_referer_module только тем и занимаются, что вычисляют значения переменных.

С появлением модуля ngx_http_perl_module обработчики переменных можно будет писать на перле. Примерно вот так можно проверить, что браузер клиента — MSIE 6.0 и выше:

http {
    perl_require     var.pm;
    perl_set  $msie  var::msie6;
    ...
}
package var;

use nginx;

sub msie6 {
    my $r = shift;
    my $ua = $r->header_in("User-Agent");

    return "" if $ua =~ /Opera/;
    return "1" if $ua =~ / MSIE [6-9]\.\d+/;
    return "";
}

1;
__END__

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