Все сконфигурирови по приведенным выше рекомендациям. Скорость существенно возросла, однако при включении дополнительных поддоменов появилась новая проблема.
Через несколько минут, после запуска nginx ПО ВСЕМ адресам вида *.brsu.by начинает грузится один из доменов третьего уровня. После очистки кеша и перезапуска nginx несколько минут все работает нормально, а потом опять фейл.
Конфиг nginx:
# Пользователь UID/GID которого будет использоваться, если был запущет от рута
user _nginx;
# Количество рабочих процессов. Рекомендуется устанавливать равным колличеству ядер
# Умножается на значение параметра worker_connections в секции events
worker_processes 2;
# Пишем логи об ошибках
# Первым значением параметра должен быть путь к файлу, вторым (необязательным) - уровень детализации
# Уровни детализации (в порядке увеличения): debug, info, notice, warn, error, crit.
error_log /var/log/nginx/error.log warn;
# В секции events настраивается подведение Nginx относительно сетевых соединений
events {
# (worker_connections) X (worker_processes) = максимально возможное количество одновременных соединений к серверу
worker_connections 1024;
# Метод обработки соединений. kqueue - эффективный метод, используемый в BSD
use kqueue;
}
# Секция описания виртуальных хостов
http {
# Подключаем таблицу соответствий расширений и MIME-типов ответов
include mime.types;
# MIME-тип выдаваемый сервером по умолчанию
default_type application/octet-stream;
# Cбрасываем соединение по таймауту. Сброс делается следующим образом .
# перед закрытием сокета для него ставится опция SO_LINGER с таймаутом 0.
# После чего при закрытии сокета клиенту отсылается пакет RST, а всё память, связанная с этим сокетом, освобождается.
#Это позволяет избежать длительного нахождения уже закрытого сокета в состоянии FIN_WAIT1 с заполненными буферами.
reset_timedout_connection on;
# Отправляем данные в сеть, минуя этап их копирования в адресное пространство приложения
sendfile on;
# Разрешаем передачу заголовка ответа и начала файла в одном пакете, а также файлa в полных пакетах
tcp_nopush on;
# Разрешаем отдравку данных без задержек, за счет отправки "неполных" пакетов
tcp_nodelay on;
# Таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера
# Для сайтов, активно использующих AJAX, соединение лучше держать подольше
# Для статических страничек, которые пользователи будут долго читать, соединение лучше разрывать пораньше
keepalive_timeout 65;
# Включаем сжатие #
# Разрешаем сжатие ответов методом gzip
gzip on;
# Число и размер буферов, в которые будет сжиматься ответ
gzip_buffers 16 8k;
# Устанавливает уровень сжатия от 1 до 9
gzip_comp_level 6;
# Отключаем компрессию для шестого осла
gzip_disable "msie6";
# Минимальный размер сжимаемых файлов
gzip_min_length 500;
# Устанавливает минимальную версию HTTP запроса для сжатия ответа
gzip_http_version 1.1;
# Разрешает или запрещает сжатие для проксированных запросов в зависимости от запроса и ответа.
# То что, запрос проксированный, определяется на основании строки "Via" в заголовке запроса.
gzip_proxied any;
# Разрешает сжатие для указанных MIME-типов в дополнение к "text/html". "text/html" сжимается всегда.
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
# Разрешает выдавать в ответе строку заголовка "Vary: Accept-Encoding"
gzip_vary on;
# Включаем проксирование #
#размер буфера, в который будет читаться первая часть ответа, получаемого от проксируемого сервера.
proxy_buffer_size 4k;
#разрешаем использовать буферизацию ответа проксируемого сервера
proxy_buffering on;
# число и размер буферов для одного соединения, в которые будет читаться ответ, получаемый от проксируемого сервера.
proxy_buffers 4 32k;
# Ключ кеша
proxy_cache_key "$scheme$proxy_host$uri$is_args$args";
# Зона для кеширования
proxy_cache_path /home/nginx-cache levels=1:2 keys_zone=my_cache:1024m max_size=3092m inactive=2h;
# зона для кэширования
proxy_cache my_cache;
# число запросов, после которого ответ будет закэширован.
proxy_cache_min_uses 1;
# время кэширования для разных ответов
proxy_cache_valid 200 2h;
# если ваш скрипт отдал одну из описанных ошибок, использовать вариант из кеша
proxy_cache_use_stale updating error timeout invalid_header http_500 http_502 http_503 http_504 http_404;
# таймаут для соединения с проксированным сервером 60 секунд
proxy_connect_timeout 60;
# разрешает передавать от проксируемого сервера клиенту sid в Cookie
proxy_pass_header Cookie;
# закрывать соединение с проксированным сервером в случае, если клиент закрыл соединение, не дождавшись ответа.
proxy_ignore_client_abort off;
# передавать клиенту проксированные ответы с кодом больше или равные 400
proxy_intercept_errors off;
#Не меняем заголовки "Location" и "Refresh" в ответе проксируемого сервера
proxy_redirect off;
# таймаут при чтении ответа проксированного сервера
proxy_read_timeout 60;
# таймаут при передаче запроса проксированному серверу
proxy_send_timeout 60;
# Переопределяем заголовки запросов передаваемых проксируемому серверу
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# Описываем группы серверов, которые могут использоваться в директивах proxy_pass
upstream backend {server 82.219.195.2:80;}
# Дальше идет описание виртуальных серверов
# Виртуальный хост по-умолчанию.
server {
listen 80 default;
server_name localhost;
deny all;
}
# Подключаем остальные виртуальные сервера
server {
listen 80;
server_name .brsu.by;
location / {
proxy_pass http://backend;
access_log off;
}
location ~ /\.ht {
deny all;
}
}
}