← All posts tagged nginx

Balancer

nginx ppa сломали. Не апгрейдится штатно. Вот простейшее решение:

Work-around fix:

Edit /var/lib/dpkg/info/nginx-common.config

and add a return on the first line of the log_symlinks_check function.

e.g.:

 log_symlinks_check() {
     return                <---- here
     # Skip new installations
     [ -z "$1" ] && return

Balancer

Уф. Решил задачу автоматического конфигурирования Docker-связки nginx/host + nginx/container + php-fpm/container. Т.е. чтобы одним скриптом запуска всё соединялось в работающую конфигурацию. Пока всё костыльно, без прав доступа и т.п. Но не придётся придумывать статические порты доступа для контейнеров или вручную прописывать проксирование на nginx-хосте.

Balancer

Продолжаю постигать дзен Docker'а. Поток мыслей по теме :)

Вот nginx. Отлично контейнеризуется. Делаем минимальный образ и запускаем только его. Официальный nginx весит 100Мб... Многовато, но если хотя бы на десяток контейнеров поделить — копейки. А вот автоматически dockerfile/nginx весит уже аж 500Мб. Посмотрел — они аж из целой Ubuntu его собирают! Вот нафига попу гармонь? Это ж снова попытка сделать из Docker оригинальную LXC! А нужно-то только один голый nginx иметь. При запуске контейнера указать персистентные конфиг и docroot. И всё, больше ничего не нужно. Даже 100Мб — это дофига.

Дальше — больше. nginx'у нужен php-fpm. Прекрасно, он пашет по сетевому интерфейсу, отлично конфигурится в той же Ubuntu (хоть индивидуально модули задавай). То есть, логика простая — запускаем контейнер с nginx, запускаем контейнер с php-fpm, каждый сам по себе, всем хорошо. С обновлениями просто, каждый обновляется отдельно (если я правильно понял, достаточно периодически docker pull делать — и всё). Фигушки. Нет вообще в docker hub'е голого php-fpm! Только в паре с nginx (в лучшем случае, а то целые комбайны). Такое впечатление, что народ сути Docker не только вообще не понимает, но и подумать на этот счёт не хочет :)

Судя по всему, придётся заводить самому в хабе минимальный образ с php-fpm, да ещё писать для народа идеологический how-to :)

Balancer

Упс. Nginx не умеет делать без извращений редирект по полному URL, с query_string в регекспе? o_O Пришлось с if в location извращаться… Четыре уродливых строки вместо одной простой…

Balancer

Вот и первое видео на АвиаПорте :) — aviaport.ru Отдаётся nginx'ом (итого сейчас уже 3 web-сервера крутится с разными задачами). Долго подбирал параметры кодирования. Вроде, получилось, нормально. 100Мб на 8,5 минут видео 720x576 и без чрезмерных потерь. В h264 было бы компактнее, но не у всех машины потянут.

Balancer

Сейчас в порядке эксперимента запустил (пустой) wrk.ru даже без традиционной точки входа своего фреймворка. Вся статика отдаётся напрямую, вся динамика заворачивается прямо на исполняемый модуль фреймворка в системном каталоге. Любой остальной PHP запрещён. Надеюсь, что ломать такую структуру будет особенно трудно :) Дополнительный цимес в том, что htdocs этого сайта вообще [условно] пустой и сайт непосредственно нигде не прописан, nginx сам определяет масс-виртхостовость. Думаю, нужно переводить на такую систему все свои сайты.

Balancer

Продолжаю постигать инопланетную логику Сысоева. директива access_log допускает использование в параметре переменных. Директива error_log — нет. При чём в документации про это упоминания, как обычно, нет...

Balancer

Nginx — разработка человека с неземной логикой. Нельзя делать вложенные условия if. Нельзя делать объединение условий по AND. Хотите логику И? Вводите флаги:
set $use_bors 1;
if ($request_uri ~ forum) {
set $use_bors 0;
}

if (-f $request_filename) {
set $use_bors 0;
}

if ($use_bors) {
rewrite ^.* /bors-loader.php;
}
...
Может быть кому-то будет полезным :)