Дек
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; } } } |
После внедрения кеширования, скорость отдачи сайта выросла в несколько раз.