nginx и gzip_static: еще один способ снизить нагрузку на сервер
Чем меньше размер страниц сайта, тем меньше расход трафика, загрузка канал и выше скорость загрузки страниц. Один из самых распространённых способов уменьшения страниц — сжатие перед отправкой пользователю.
В Apache для этих целей используется mod_deflate, в nginx — ngx_http_gzip_module.html. В других web-серверах используются похожие решения.
Что mod_deflate, что ngx_http_gzip_module используют сжатие «на лету» — файл сжимается перед отдачей пользователю. Но сжатие — операция, нагружающая процессор, и чем выше степень сжатия, тем больше нагрузка. Это не было бы проблемой, если бы один и тот же файл не приходилось сжимать каждый раз заново. Далее »
Ноя
2009
Модуль поддержки tcpwrappers для nginx
TCP Wrappers — система контроля доступа, используемая для ограничения доступа к серверам на UNIX-подобных операционных системах (Linux, BSD). Контроль доступа может осуществляться, например, по имени хоста (полному или частичному), адресу, подсети. Подробности приведены здесь.
TCP Wrappers очень удобно использовать с программами для защиты от червей (BlackHosts, DenyHosts, Fail2ban), в частности, для защиты от HTTP-сканирования.
Огромным достоинством TCP Wrappers является возможность динамической конфигурации списков контроля доступа (что избавляет от необходимости перезапускать защищаемый сервис) и простота файлов конфигурации (это субъективно).
К сожалению, nginx не поддерживает TCP Wrappers из коробки. К счастью, это можно исправить. Далее »
Автор: Vladimir, опубликовано в: C/C++, nginx, Администрирование, Безопасность, комментариев: 2Окт
2009
ngx_drop_privs: принцип минимальных привилегий в nginx
nginx — замечательный web-сервер, но, как и практически любой программный продукт, не свободен от ошибок, временами весьма критических.
Архитектура nginx такова, что обычно имеется один привилегированный процесс (запускаемый от всемогущего root) и один или более рабочих процессов (обычно работающих от имени непривилегированного пользователя). Тем не менее, я видел конфигурации, в которых все процессы nginx работают под привилегированным пользователем. Один из примеров — многопользовательский сервер, Document Root сайтов на котором имеет права вида 0700 (запускать несколько nginx и настраивать проксирование — тоже не лучший выход).
Кроме того, за последние неполные пять лет в nginx найдено 112 ошибок (segmentation fault), некоторые из которых теоретически могут дать возможность выполнения произвольного кода в системе (wget http://sysoev.ru/nginx/changes.html -q -O - | grep segmentation | wc -l).
Я не знаю, все ли ошибки затрагивали только рабочие процессы, либо были ошибки в главном процессе — рисковать не хочется. Так и родилась идея написать модуль для nginx — ngx_drop_privs. Далее »
Сен
2009
oDesk Time Tracker Vulnerabilities
- oDesk Time Tracker does not verify the SSL certificate of the host it connects to thus becoming vulnerable to various Man-in-the-Middle attacks (if an attacker is able to spoof DNS for team.odesk.com — say, by setting up a fake DHCP and DNS servers in the local network — or posion the DNS cache or whatever — this is doable). Далее »
Июн
2009
nginx 0.8.0
Вчера вышла новая версия web-сервера nginx — 0.8.0, а версия 0.7.59 объявлена стабильной. Далее »
Автор: Vladimir, опубликовано в: nginx, комментариев: 4Июн
2009
nginx Compatibility: делаем WordPress дружелюбнее к nginx
Переведя несколько сайтов с Apache на nginx, уже который раз встречаю подводные камни. Один из них — нежелание WordPress понимать код редиректа, другая — постоянные попытки использовать PATHINFO-пермалинки вместо «нормальных» (pretty permalinks).
Неудобно каждый раз лезть в код WordPress, чтобы поправить очередную несовместимость, поэтому я написал небольшой плагин. Далее »
Автор: Vladimir, опубликовано в: nginx, Плагины WordPress, комментариев: 7Апр
2009
Самый свежий nginx для Ubuntu/AMD64
На данный момент в моём репозитории находится nginx 0.8.29.
Поддерживаемые релизы:
- Dapper Drake (6.06);
- Hardy Heron (8.04);
- Intrepid Ibex (8.10);
- Jaunty Jackalope (9.04);
- Karmic Koala (9.10).
Поддерживаемые архитектуры:
- AMD64;
- i386.
echo "deb http://deb.sjinks.pro/ jaunty main" >> /etc/apt/sources.list
echo "deb-src http://deb.sjinks.pro/ jaunty main" >> /etc/apt/sources.list
wget http://deb.sjinks.pro/67C02A558F688141.pub -O 67C02A558F688141.pub
apt-key add 67C02A558F688141.pub
aptitude update
aptitude install nginx
В коде выше замените jaunty кодовым именем своего дистрибутива (dapper, hardy, intrepid или karmic).
Работает! ![]()
Далее »
Мар
2009
WordPress, FastCGI и редирект 301: часть 2
Более изящное решение, нежели представленное в первой части (WordPress, FastCGI и редирект 301).
В первой части предлагалось при использовании web-сервера nginx закомментировать проверку на SAPI PHP (if ( php_sapi_name() != 'cgi-fcgi' )). Однако есть лучшее решение. Далее »
Мар
2009
WP Super Cache + nginx: замена правил mod_rewrite
Сборная солянка с нескольких форумов (ссылок, к сожалению, не дам, но Google может помочь); данная конфигурация является рабочей.
Далее »
Фев
2009
WordPress + nginx: запрет выполнения PHP-файлов в uploads
В Apache проблема решается просто: в каталог uploads помещается .htaccess следующего содержания:
В nginx .htaccess не предусмотрен (что можно рассматривать и как достоинство, и как недостаток), поэтому там нужно применить несколько другой подход. Далее »
Фев
2009

Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.

