nginx 0.8.20 для Debian Lenny

Собрал для Debian Lenny deb-пакет.

Что нового в 0.8.20 версии:

*) Изменение: теперь по умолчанию используются следующие шифры SSL:
“HIGH:!ADH:!MD5”.

*) Исправление: модуль ngx_http_autoindex_module не показывал последний
слэш для линков на каталоги; ошибка появилась в 0.7.15.

*) Исправление: nginx не закрывал лог, заданный параметром конфигурации
–error-log-path; ошибка появилась в 0.7.53.

*) Исправление: nginx не считал запятую разделителем в строке
“Cache-Control” в строке заголовка бэкенда.

*) Исправление: nginx/Windows мог не создать временный файл, файл в
кэше или файл с помощью директив proxy/fastcgi_store, если рабочий
процесс не имел достаточно прав для работы с каталогами верхнего
уровня.

*) Исправление: строки “Set-Cookie” и “P3P” в заголовке ответа
FastCGI-сервера не скрывались при кэшировании, если не
использовались директивы fastcgi_hide_header с любыми параметрами.

*) Исправление: nginx неверно считал размер кэша на диске.

Взять можно тут

Также собрал пакет, в который включены патчи, позволяющие использовать:
переменные $crc32_name и $md5_name
переменные $loadavg_1m, $loadav_5m, $loadavg_15m
А также использовать оперраторы < !< > !> в if-условиях

За патчи отдельное спасибо Кириллу Коринскому

Пакет можно взять тут

Nginx как проксирующий фронт-енд к Apache #2

В продолжение темы о связке nginx + apache + directadmin решил все же написать хоть что то 🙂

Данная фича писалась “на коленке” и никоим образом не претендует на полноценное и законченное решение, однако на протяжении года проработало на shared-хостинге, обслуживая более 1000 доменов.

Суть заключается в том, что nginx полностью отвечает за отдачу всей статики (картинки, архивы, файлы стилей и т.д.), а апач занимается обработкой скриптов. Для снижения нагрузки апач не ведет access_log (только error_log),  логи так же ведет nginx. За SSL тоже отвечает nginx.

nginx выступает в роли фронт-енда, в то время как апач – в роли бек-енда. nginx слушает внешние IP адреса, апач – только один, например, 127.0.0.1:80

Read more Nginx как проксирующий фронт-енд к Apache #2

Короткие “напоминалки”

* практическия вся информация собрана из рассылки nginx. Чтобы не рыться, решил собрать некоторые моменты тут, в одной куче 🙂

HTTP redirect с requested домена на какой угодно адрес (target_domain.tld)
редирект без использования location:

server {
listen IP:80;
server_name requested_domain.tld;
rewrite ^ http://target_domain.tld$request_uri;
}

редирект с использованием location:

server {
listen IP:80;
server_name requested_domain.tld;
location = / { rewrite ^ http://redirect.to/; }
}

как максимально просто запретить запросы с определенными user-agent ?
можно сделать примерно так:

if ($http_user_agent ~ AESOP_com_SpiderMan|Alexibot|Anonymouse\.org|asterias|attach|BackDoorBot|BackWeb|Bandit|Baiduspider|BatchFTP|Bigfoot)
return 503;
}

как сделать так, чтобы пользователь набрав some.site.ru и если этот some не прописан в конфиге редиректился на основной сайт, т.е. www.site.ru ?
Определить server с listen default и уже в нем делать:
rewrite (.*) http://www.site.ru/$1 permanent;

Можно ли для определённого локейшна каким-либо образом реализовать такой алгоритм: смотрим на файл, если находим его-отдаём. Если такого файла нет-запрашиваем у бэкэнда.
это одно из самых распространенных применений nginx:
http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#error_page


location / {
root /home/site1/public_html;
error_page 404 = @backend;
# если нужно поменять код ответа, укажите его после =
# error_page 404 =200 @backend;
}location @backend {
proxy_set_header
...
proxy_pass http://127.0.0.1:123;
}

Nginx как проксирующий фронт-енд к Apache

Что имеем:

Самый обычный набор namebased хостинг-провайдера:
– apache 1.3.x
– DirectAdmin
– на сервер на базе CentOS 5.x и тормоза при отдаче страниц клиентам

Что получим:
Nginx в качестве фронт-енда для Апачи
– автосоздание конфигов для виртуал.хостов из Directadmin
– ограничение количества коннектов с одного IP
– ощутимое снижение нагрузки на сервер и на Apache

Установка nginx.
Скачиваем стабильную ветку (на момент написания 0.6.32 – последняя стабильная версия) :
# wget http://sysoev.ru/nginx/nginx-0.6.32.tar.gz
# tar -zxvf ./nginx-0.6.32.tar.gz
# cd nginx-0.6.32

в файле configure указываем нужные модули, а неиспользуемые лучше отключить. Большое количество модулей немного замедляет работу nginx.
У меня nginx собирается такой:

cat ./myconfigure
#!/bin/sh
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/bin \
--without-http_ssi_module \
--without-http_auth_basic_module \
--without-mail_pop3_module \
--without-mail_imap_module \
--without-mail_smtp_module \
--user=apache \
--group=apache \
--with-http_stub_status_module \
--with-http_realip_module \
--without-http_charset_module \
--without-http_memcached_module \
--without-http_upstream_ip_hash_module \
--without-http_browser_module \
--with-http_flv_module \
--with-http_sub_module \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log

# ./myconfigure
….
# make ; make install

Далее надо будет настроить конфиг nginx и шаблоны апачевского конфига от директадмина

Будет больше времени, допишу как это все это сделал….