KARTz.RU
кушаешь морковь – встанет вновь и вновь

Переходим на nginx

Март 03rd, 2012

После того, как коллега продемонстрировал, что утилитой slowhttptest можно вырубить сервер даже с телефона через узкий gprs-канал, используя уязвимость к медленному чтению, я начал задумываться о замене apache на nginx. Это, хотя и не даёт 100% защиты от такого рода атак, значительно уменьшает восприимчивость к ним из за разной архитектуры серверов в отношении процессов-воркеров-потомков, планирования и буферов выдачи.

Первым делом я нашёл какой-то мануал по установке на хабре и попытался его применить. Ничего не получилось. Во-первых, потому, что мануал был для debian, а на целевой машине стоял centos, и скрипты запуска не заработали. Во-вторых, мануал был устаревший на 3 года, там сетовали на отсутствие нгинкса в репозитории, а про fastcgi php manager ещё не слышали.

В итоге мне не пришлось ничего компилять и создавать вручную скрипты запуска.
yum install nginx отработал нормально, установив мне nginx x86_64 1.0.12-1.el5.art из atomic (402k). А вот php-fpm сходу ставиться не захотел, так как он был версии 5.3.10, а пых у меня стоят 5.3.8. это решилось очень просто, обновлением всего:
yum update
yum install php-fpm

Оно задаёт всякие вопросы, отвечать чаще всего нужно утвердительно. После безусловно самосоглассованных репов дебиана такое поведение как минимум непривычно.

Кстати, я так и не смог установить такие вещи, как htop, lame, timidity… Наверно будет проще при необходимости их скомпилировать, чем устанавливать другой репозиторий.

Не понял, почему не работает конструкция
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
надо всё же изучать ман. Много неочевидных поначалу вещей.

Какое-то время проковырялся с настройкой рерайтов для вордопресса. Перепробовал несколько готовых, заработало это:
index index.php;
rewrite ^.*/files/(.*) /wp-includes/ms-files.php?file=$1;
if (!-e $request_filename)
{
rewrite ^.+?/?(/wp-.*) $1 last;
rewrite ^(.+)$ /index.php;
}

При переходе перестал работать ajax chat. Выбрасывает в логаут. Судя по всему, заточен под апач. Чтение документации не помогло. Лезть в 450 кб ООП-кода неохота. Проще найти другой чат. Хотя, письмо авторам всё же напишу. (написал, баг № 3496489). https://sourceforge.net/tracker/?func=detail&aid=3496489&group_id=214758&atid=1030954

Hi.
I successively used ajax chat (0.8.3 and 0.8.5) on Apache.
But on nginx+php-fpm i obtain instantaneous logout after first ajax request (according to web server log).
( http://klinchat.ru/?ajax=true&lastID=0&getInfos=userID%2CuserName%2CuserRole%2CchannelID%2CchannelName&channelID=0 )
Files and database is the same.
Was it tested under nginx? Maybe i need some specific configuration?
Thanks.

Также остался вопрос о создании нескольких пулов fpm с разными пользовательскими правами для разных хостов для повышения безопасности. На досуге займусь и этим вопросом.

Кстати, дефолтная конфигурация php-fpm чуть не убила мне систему. Там в конфиге по умолчанию прописано динамическое число процессов-воркеров с большим пределом, а жрут процессы метров по 60 каждый, что на практике привело к исчерпанию оперативной памяти скромной впски. Перестало запускатся всё — даже killall. К счастью, kill ещё работал, и я смог вслепую поубивать несколько ид (ps не запускался), после чего завершил всё штатно и поправил конфиг.


Filed under: Без рубрики | Метки: , , ,
Март 03rd, 2012 09:46:08

Похожие посты:
1 comment

koha
26/07/2012

для центос
chkconfig httpd off
chkconfig nginx on

Leave a Reply