RU EN

Настройка отдачи файлов

 

Ряд параметров может существенно повысить эффективность отдачи файлов.

sendfile on;

Позволяет вместо 2-х системных вызовов read() и write() использовать один sendfile() при чтении файла с диски и отдаче его через tcp-сокет.

tcp_nopush on;

Разрешает или запрещает использование параметра сокета TCP_NOPUSH во FreeBSD или TCP_CORK в Linux. Параметр включаются только при использовании sendfile. Включение параметра позволяет

  • передавать заголовок ответа и начало файла в одном пакете в Linux и во FreeBSD 4.*;
  • передавать файл полными пакетами.

keepalive_timeout 65;

Время жизни клиентской сессии. Позволяет сэкономить на инициализации нового соединения в течение установленного в секундах интервала.

tcp_nodelay on;

Используется только вместе с директивой keepalive_timeout. При отдаче последнего неполного пакета в незакрывающемся соединении может возникнуть задержка. Чтобы её избежать и нужен TCP_NODELAY.

directio 4m;

Директива позволяет использование флагов O_DIRECT (FreeBSD, Linux), F_NOCACHE (Mac OS X) или directio() функцию (Solaris) для чтения файлов больше указанного размера. Она отключает использование sendfile() для запроса. Полезна для отдачи файлов большого размера.

expires 30d;

Директива управляет содержанием полей “Expires” и “Cache-Control”. при условии, что код ответа равен 200, 201, 204, 206, 301, 302, 303, 304 или 307. В качестве параметра можно задать положительное или отрицательное время. Параметр off запрещает добавлять или менять поля “Expires” и “Cache-Control” в заголовке ответа.

limit_rate

Это достаточно важная опция. Она позволяет ограничить скорость отдачи файлов. В том случае, если Вы отдаете потоковое видео, либо музыку, Вам следует установить ограничения на скорость отдачи. Это позволит сэкономить канал и обслужить больше клиентов:

limit_rate 196K;

Эта опция работает только в рамках одного запроса, а не клиента. Если Вы хотите поставить ограничение на клиента, следует использовать переменную:

set $limit_rate 196K;

В nginx также есть возможность установить порог отдачи, после которой ограничение войдет в силу. Также имеет смысл для потокового медиа:

limit_rate_after 1m;
Комментариев: 0
18.05.2013 06:01


HTTP авторизация в nginx

 

Сначала создаём файл авторизации. Для этого с ключем -с запускаем команду:

htpasswd -c /var/www/www.example.com/.access username1
# Последующее добавление пользователей уже без ключа -с
htpasswd /var/www/www.example.com/.access username2

В конфигурацию nginx добавляем следующие строки:

location / {
    auth_basic  "RESTRICTED ACCESS";
    auth_basic_user_file /var/www/www.example.com/.access;
}
Комментариев: 0
11.11.2012 20:09