Дек 08 2009

Тюнинг nginx.

Привлекательность nginx обеспечивают, его схема работы, без форка как у Apache, за счет этого потрясающая скорость отдачи статики и кеширование, которое резко снимает нагрузку с системы, что позволяет максимально приблизится к «золотой мечте» сисадмина — обслукживание одновременных 1000 соединений. А модуль проксирования умеет замечательно балансировать нагрузку и определять отказы бекэндов. Есть еще много привлекательных возможностей у nginx, но упомянутые выше возможности дают nginx неоспоримые приимущества.

Мой конфигурационный файл, я работаю с php-fpm, выглядит так:

worker_processes  1;
events {
#epoll я использую там, где стоит Линукс
#        use epoll;
#Под FreeBSD обязательно kqueue
use kqueue;
worker_connections  1024;
}
 
http {
include       mime.types;
default_type  application/octet-stream;
#Организовываем кеш для FastCGI сервера, обязательно на том же разделе, что и временные файлы nginx
fastcgi_cache_path /var/tmp/nginx/fcgi-cache/ levels=1:2   keys_zone=one:10m;
#Используем sendfile, но осторожно, если надо отдавать большие файлы, то sendfile случается вредит
sendfile        on;
keepalive_timeout  65;
#Расширяем буфера отдачи
output_buffers   32 512k;
#Ограничиваем размер сегмента отправляемой за одну
#блокируемую отдачу
sendfile_max_chunk  128k;
#Буфер отдачи которы используется для обрабатываемых данных
postpone_output  1460;
#Размер хеша для доменных имен.
server_names_hash_bucket_size 64;
#Размер данных принемаемых post запросом
client_max_body_size 15m;
server {
listen       80;
server_name  hilik.org.ua www.hilik.org.ua;
location / {
root   /var/www/hilik.org.ua;
index  index.php index.html index.htm;
location ~ \.php$ {
root           /var/www/hilik.org.ua;
#PHP-FPM слушает на Unix сокете
fastcgi_pass   unix:/tmp/php.sock;
#Использовать cache зона one
fastcgi_cache  one;
#Помещать страницу в кеш, после 3-х использований. Меньшее число вызвало у меня труднообъяснимые глюки
# на формах регистрации
fastcgi_cache_min_uses 3;
#Кешировать перечисленные ответы 
fastcgi_cache_valid 200 301 302 304 5m;
#Формат ключа кеша - по этому ключу nginx находит правильную страничку
fastcgi_cache_key "$request_method|$host|$request_uri";
#Если не использовать эту опцию - то в форумах все будут сидеть под именем первого вошедшего на форум
fastcgi_hide_header "Set-Cookie";
#Этот запрос заставит nginx кешировать все что проходит через него
fastcgi_ignore_headers "Cache-Control" "Expires";
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /var/www/hilik.org.ua$fastcgi_script_name;
include        fastcgi_params;
}
 
}
}

После внедрения кеширования, скорость отдачи сайта выросла в несколько раз.


Украинская Баннерная Сеть