- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый вечер, серчане.
Кто сможет подсказать оптимальный конфиг nginx для отдачи файлов (видео,mp4) размеров ~20-450мб? (Работает связка apache + nginx).
Может подскажете, если что не так в нынешнем? Мой конфиг:
# Число рабочих процессов nginx, рекомендуется ставить по количеству процессоров/ядер на вашем сервере
worker_processes 4;
# Расположение PID файла Nginx
pid /var/run/nginx.pid;
# Уменьшаем число системных вызовов gettimeofday(), приводит к увеличению производительности
timer_resolution 100ms;
# Изменяем ограничение на число используемых файлов RLIMIT_NOFILE для рабочего процесса.
worker_rlimit_nofile 8192;
# Директива задаёт приоритет рабочих процессов от -20 до 20 (отрицательное число означает более высокий приоритет).
worker_priority -5;
events {
worker_connections 1024;
use kqueue;
}
http {
include /usr/local/etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] $status '
' "$request" $body_bytes_sent "$http_referer" '
' "$http_user_agent" "http_x_forwarded_for" ';
access_log /var/log/nginx/access.log main;
# Включить sendfile(). Экономит системные вызовы, уменьшает число копирований данных, позволяет использовать меньше физической памяти.
sendfile on;
# Задаём таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера. Второй параметр задаёт значение в строке "Keep-Alive: timeout=время" в заголовке ответа.
keepalive_timeout 30;
#Включить TCP_CORK в Linux, это позволяет передавать заголовок ответа и начало файла в одном пакете в Linux
tcp_nopush on;
# Разрешаем использовать TCP_NODELAY.
tcp_nodelay on;
# Включить прямое чтение без обращение в кеш операционной системы
# directio 10m;
# кеширование на браузере, если есть вероятность того, что один и тот же пользователь сможет несколько раз запросить один и тот же файл
# expires max;
# Запрещаем выдавать версию nginx'а в сообщениях об ошибках и в строке заголовка ответа "Server".
server_tokens off;
# Разрешаем сжатие ответа gzip.
gzip on;
# Разрешаем проверку готового сжатого файла.
gzip_static on;
# Устанавливаем уровень сжатия ответа методом gzip.
gzip_comp_level 5;
# Устанавливаем минимальную длину ответа, для которых будет выполняться сжатие ответа методом gzip
gzip_min_length 1024;
# Директива описывает зону, в которой хранятся состояния сессий. Выделим 10 мегабайт что хватит на 320000 состояний
limit_zone myzone $binary_remote_addr 100m;
# Далее описываем сервер
server {
# Задаём максимальное число одновременных соединений для одной сессии.
limit_conn myzone 10;
# Задаем порт
listen 80;
# Директива server_name _; говорит о том, что мы задаем ЛЮБОЙ хост
server_name _;
# Запрещаем использовать в редиректах, основное имя сервера
server_name_in_redirect off;
# Задаем файл лога
access_log /var/log/nginx/host.access.log main;
location / {
# Задаем адрес и порт где будет находиться apache
proxy_pass http://127.0.0.1:8090/;
# Директива задаёт текст, который нужно изменить в строках заголовка "Location" и "Refresh" в ответе проксируемого сервера.
proxy_redirect off;
# Добавляем строки заголовка запроса, передаваемые проксируемому серверу.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# Задаем максимально допустимый размер тела запроса клиента
client_max_body_size 100m;
# Задаём размер буфера для чтения тела запроса клиента
client_body_buffer_size 1028k;
# Задаём таймаут для соединения с проксированным сервером
proxy_connect_timeout 30;
# Задаём таймаут при передаче запроса проксированному серверу
proxy_send_timeout 90;
# Задаём таймаут при чтении ответа проксированного сервера
proxy_read_timeout 90;
# Задаём размер буфера, в который будет читаться первая часть ответа, получаемого от проксируемого сервера.
proxy_buffer_size 4k;
# Задаём число и размер буферов для одного соединения, в которые будет читаться ответ, получаемый от проксируемого сервера.
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 100m;
} # location
location /secure {
#set $limit_rate 496K;
#limit_rate_after 1m;
root /usr/www.xxx.xx/www;
internal;
mp4;
}
} # server
} # http
Заранее благодарю за ответы.
---------- Post added 04-03-2012 at 21:43 ----------
И еще одна проблема. Как ограничить канал www-хоста?
не вижу включеного aio в нгинксе
и что б сервер держал такой траф, нужно много памяти + желательно 4 диска в зеркальный рейд
(но это зависит, сколько контента будет серв отдавать)
тут ньюансы есть, надо конфиг сервер знать и скоко контента будет отдаваться, что б прикинуть возможности
---------- Добавлено 04.03.2012 в 23:14 ----------
да и стриминговые сервера лучше держать отдельно от скриптов
Да, aio тут будет очень полезен. И sendfile off.
Кстати, у меня на отдачу больших файлов в гигабитный канал лучшего результата удалось достичь с lighttpd, а не с nginx'ом.
И еще одна проблема. Как ограничить канал www-хоста?
В nginx - limit_rate или $limit_rate
А если всего вебсервера, то можно приоритезацию трафика использовать, типа htb.init
не вижу включеного aio в нгинксе
и что б сервер держал такой траф, нужно много памяти + желательно 4 диска в зеркальный рейд
(но это зависит, сколько контента будет серв отдавать)
тут ньюансы есть, надо конфиг сервер знать и скоко контента будет отдаваться, что б прикинуть возможности
---------- Добавлено 04.03.2012 в 23:14 ----------
да и стриминговые сервера лучше держать отдельно от скриптов
Спасибо, попробую включить aio. И отключить sendfile.
Трафик вебсайта сейчас - 8000-13000 уник. посетителей в сутки. Просмотров около 15000-25000.
Что касается сервера:
ОС - 7.3-RELEASE-p7
4 ядра по 2,4 ГГц
RAM 16 Гб DDR3
HDD 4x1000 GB SATA II
Пока занято места около 1 ТБ.
Есть видео и больше 600мб, но я такие планирую разбить на 2-3 части.
Поставил memcache, eAccelerator 0.9.6.1.
Да, aio тут будет очень полезен. И sendfile off.
Кстати, у меня на отдачу больших файлов в гигабитный канал лучшего результата удалось достичь с lighttpd, а не с nginx'ом.
В nginx - limit_rate или $limit_rate
А если всего вебсервера, то можно приоритезацию трафика использовать, типа htb.init
Насчет ограничения вебсервера:
Просто у меня 2 раза уже сервер фактически зависал из-за полной забитости канала.. В nginx, видимо, можно ограничивать скорость только отдельно взятого клиента. А мне нужно либо вебсервера, либо виртуального хоста..
Спасибо, почитаю про htb.init.
Насчет aio и sendfile понятно все, а какие параметры посоветуете поставить для:
output_buffers 256 512k; # зная размер и примерное количество одновременно отдаваемых файлов, можно подобрать более подходящие значения
странно, что б так мало пользователей могли забить канал в 1 гигабит, наверно limit_rate не срабатывает или он неверно прописан
Насчет ограничения вебсервера:
Просто у меня 2 раза уже сервер фактически зависал из-за полной забитости канала.. В nginx, видимо, можно ограничивать скорость только отдельно взятого клиента. А мне нужно либо вебсервера, либо виртуального хоста..
ограничивать скорость для веб-сервера, будет не самая лучшая идея)
всё таки правильнее резать скорость каждому клиену который смотрит видео до нужного битрейта
"output_buffers 256 512k; # зная размер и примерное количество одновременно отдаваемых файлов, можно подобрать более подходящие значения" - с статьи с хабра? )
я б рекомендовал что-то вроде output_buffers 2 256k; ;)
ну и read_ahead не забыть
Насчет ограничения вебсервера:
Просто у меня 2 раза уже сервер фактически зависал из-за полной забитости канала.. В nginx, видимо, можно ограничивать скорость только отдельно взятого клиента. А мне нужно либо вебсервера, либо виртуального хоста..
Цитита из документации по nginx, limit_rate:
Если необходимо ограничить скорость для части клиентов на уровне сервера, то директива limit_rate для этого не подходит. Вместо этого следует задать желаемое ограничение скорости в переменной $limit_rate:
server {
if ($slow) {
set $limit_rate 4k;
}
...
}