Установка связки nginx + apache

В данной статье основной упор делается на связку nginx + apache, на их взаимодействие и, как следствие, увеличение скорости работы сайта.  Автор подразумевает, что веб-сервера apache + nginx у вас уже установлены с настройками «по-умолчанию». Подробнее о процессе установки читайте в статье:

«Установка производительного веб-сервера с nginx, apache и memcached»

Конфигурация Apache

Откроем конфигурационный файл нашего сайта и внесем изменения до следующего вида:


<VirtualHost nagg.ru:8080>
 ServerAdmin sf@nagg.ru
 ServerName nagg.ru
 ServerAlias nagg.ru www.nagg.ru
 AddDefaultCharset UTF-8
 #AddDefaultCharset Off
 DocumentRoot /www/nagg.ru/www4
 <Directory "/www/nagg.ru/www4">
 Order allow,deny
 Allow from all
 Options +FollowSymLinks +ExecCGI
 RewriteEngine On
 AllowOverride All
 #AuthName "Access"
 #AuthType Basic
 #AuthUserFile /www/nagg.ru/www/htpasswd.users
 #Require valid-user
 </Directory>
 ErrorLog logs/nagg.ru-error_log
  LogLevel warn
 CustomLog logs/nagg.ru-access_log combinedio
</VirtualHost>

Сохраняем настройки и правим nginx.


vim /etc/nginx/nginx.conf

В конфиг nginx добавил несколько новшеств:

timer_resolution  100ms; - Директива уменьшает разрешение времени в рабочих процессах, за счёт чего уменьшается число системных вызовов gettimeofday(). По умолчанию gettimeofday() вызывается после каждой операции получения событий из ядра.

worker_processes  15; - Устанавливаем число рабочих процессов = 15

worker_priority   0; - Директива задаёт приоритет рабочих процессов подобно тому, как это делается командой nice: отрицательное число означает более высокий приоритет.

worker_rlimit_nofile 65535; - Директива изменяет ограничение на число используемых файлов  RLIMIT_NOFILE для рабочего процесса. Используется для увеличения ограничения без перезапуска основного  процесса.

worker_connections 2048; 

В конфигурации http {} меняем следующие значения:

access_log off; - снижаем нагрузку

tcp_nopush on; - полезно для sendfile(), он в этом случае выводит данные полными пакетами. После того, как весь запрос обработан, TCP_CORK/TCP_NOPUSH выключается, что приводит в сбросу последнего неполного пакета.

tcp_nodelay on; - полезно для keep-alive. nginx включает TCP_NODELAY только по окончании запроса, после которого соединение переходит в состоянии keep-alive. До этого nginx выводит данные вызовами writev() достаточно большими порциями для заполнения пакета ("postpone_output 1460"), поэтому данные должны уходить без задержек и TCP_NODELAY не нужен. А вот с последним неполным пакетом может случится небольшая задержка, если соединение не закрывается. Для этого и нужно включить TCP_NODELAY.

reset_timedout_connection on; - Директива разрешает или запрещает сбрасывать соединение по таймауту.

keepalive_timeout 35 25; - Директива задаёт таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера. Второй параметр задаёт значение в строке "Keep-Alive: timeout=время" в заголовке ответа. Параметры могут отличаться друг от друга. Строку "Keep-Alive: timeout=время" понимают Mozilla и Konqueror. MSIE сам закрывает keep-alive соединение примерно через 60 секунд.

server_names_hash_max_size 2048; - Директива задаёт максимальный размер хэш-таблиц имён серверов.

server_names_hash_bucket_size   128; - Директива задаёт размер корзины в хэш-таблицах имён серверов. Значение по умолчанию зависит от размера строки кэша процессора.

server_tokens off; - Директива запрещает выдавать версию nginx-а в сообщениях об ошибке

gzip              on; - включаем сжатие

gzip_proxied      any;

gzip_http_version 1.0;

gzip_buffers      4 8k;

gzip_min_length   1024;

gzip_disable      "msie6";

gzip_types        text/plain text/xml text/javascript text/css text/json application/xml+rss;

gzip_comp_level   6;

proxy_set_header Host $host; - Директива позволяет переопределять или добавлять строки заголовка  запроса, передаваемые проксируемому серверу.

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

Не забываем смотреть описание директив nginx на сайте разработчика: http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html#proxy_set_header

Перезапускаем apache и nginx:


/etc/init.d/httpd restart && /etc/init.d/nginx restart

Заведение сайтов в конфигурациях apache и nginx >>

No related posts.

You can leave a response, or trackback from your own site.

Оставить комментарий

*