ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Проблема кеширования ме дленного удаленного фро нтэнда



Все сконфигурирови по приведенным выше
рекомендациям. Скорость существенно
возросла, однако при включении
дополнительных поддоменов появилась
новая проблема. 
Через несколько минут, после запуска
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;
                                }
                        }

}

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,212034,212416#msg-212416


_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.