by Romul То, что интересно мне

14Авг/110

500 ошибка в nginx

Скверная ошибка попалась... в логах php пусто, в логах apache пусто - ошибок нет
Посмотреть, что творится в логах nginx сразу мысль не пришла, а зря.

Метки записи: , , Нет комментариев
18Мар/100

Снижение трафика на сервере

Столкнулся с проблемой нового хостинга, где ограничение по трафику - 2Tb.
Сайт, с просмотром/скачиванием видео ~20.000 за сутки, кушает 120Gb.

Пришлось принять меры:
- ограничил скачивание видео для пользователей - 3 видео в сутки (пока элементарно, если применить мозг - ломается мгновенно)
- в nginx сделал элементарное ограничение по скорости и коннектам

в зоне http:
limit_zone download $binary_remote_addr 10m;

в location:
limit_conn download 2;
limit_rate_after 2048k;
limit_rate 128k;

restart nginx в debian:
/etc/init.d/nginx restart

просмотр трафика в realtime утилитой ifstatus

Количество одновременное воспроизводимых видео - 2
После скачки 2Mb скорость падает до 128Kb

30Дек/090

Nginx – логические операторы «И», «ИЛИ»

Как написать location в nginx, который срабатывает, если два условия должны выполняться. Логично было бы написать так:

if ($http_user_agent ~* "Opera" AND $http_referer ~* "yandex.ru") {
bla bla bla
}

nginx не предусматривает в условиях логические операторы
Решение есть в виде хака:

set $a "";
if ($http_user_agent ~* "Opera" ) {
set $a 1;
}
if ($http_referer ~* "yandex.ru") {
set $a 1$a;
}
if ($a = 11) {
bla bla bla
}

Идея очень проста, создается переменная, в которую по мере срабатывания условий накапливается строка. Далее срабатывает какое-либо условие с учетом этой строки.

Может man читал не внимательно и кто-то подскажет более красивое решение этой проблемы?

Метки записи: Нет комментариев