Кстати! Давным давно уже начал заливать свои наработки по puppet в BitBucket, но забыл написать об этом. Исправляю сей недостаток. Пользуйтесь: https://bitbucket.org/lagman/freebsd-puppet/src/
Простой пример из повседневной эксплуатации: Требуется nginx c модулем ngx_cache_purge в убунте. Окей, не вопрос: подключаем ppa, ставим nginx-extras оттуда. Внезапно оказывается, что ngx_cache_purge в этой поставке отсутствует. И это несмотря на «full set of core modules and extras». Окееей, где наша не пропадала. Гуглим немножко, ставим dpkg-dev. Жить становится еще веселей: # apt-get build-dep [...]
На этот раз дружим с nginx dokuwiki: location /wiki { index index.php; access_log logs/wiki.log; error_log logs/wiki-error.log; rewrite ^/wiki/_media/(.*) lib/exe/fetch.php?media=$1 last; rewrite ^/wiki/_detail/(.*) lib/exe/detail.php?media=$1 last; rewrite ^/wiki/_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 last; if (!-e $request_filename) { rewrite ^/wiki/(.+)$ /wiki/doku.php?id=$1 last; } if ($request_uri ~ ^/wiki/(bin|conf|data|inc)) { return 403; } rewrite ^/wiki/index.php$ doku.php; }
Ура! В кои веки нашел нормальный таск менеджер и трекер времени — redmine. Он хоть и хоть и написан на богомерзком руби, но работает шустро и локализован просто отлично. В портах его можно найти в /usr/ports/www/redmine Первоначальная настройка подробна описана в вики на сайте проекта. Из подводных камней столкнулся лишь с не работающими из коробки [...]
Реализация Flash Policy Daemon на nginx проста и изящна: # FLASH POLICY DAEMON # returns crossdomain.xml on any request server { listen 843; server_name localhost; location / { rewrite ^(.*)$ /crossdomain.xml; } error_page 400 /crossdomain.xml; location = /crossdomain.xml { root html; } }
В определенных ситуациях требуется быстро раздавать фиксированный набор статических файлов, например при раздаче swf файлов flash/flex приложений. Для того, чтобы снизить нагрузку на диски и уменьшить время реакции, можно организовать горячее кэширование файлов в оперативной памяти: Создадим хранилище для кэша на md диске: mkdir /var/tmp/nginx chown www:www /var/tmp/nginx echo «md /var/tmp/nginx mfs rw,-s128m,late 2 0″ [...]
Заблокировать доступ к служебным директориям subversion в nginx очень просто: location ~ \.svn/ { return 404; }
Осваиваю новый фреймворк. Поскольку поддержки .htaccess в nginx нет, нужно добавить следующие строчки в конфиг, дабы фреймворк заработал правильно: if ($request_filename ~ ^(application|modules|system)) { return 403; } if (!-e $request_filename) { rewrite ^/(.+)$ /index.php?kohana_uri=$1 last; }
Простой и изящный способ избавиться от www в запросах на всех виртуальных серверах, обслуживаемых nginx. Не сработает для доменов, для которых server_name задан в виде .domain.ru (с точкой) и www.domain.ru. server { listen 1.2.3.4:80; server_name ~^www\.(?<name>.*); rewrite ^ http://$name$request_uri? permanent; }
Вот что пишет о механизме accept-фильтров автор web-сервера nginx Игорь Сысоев: Два года назад во FreeBSD появились accept-фильтры. Они позволяют не передавать в accept() пришедшее соединение до тех пор, пока не придёт первый пакет с данными (фильтр dataready) или заголовок HTTP-запроса (фильтр httpready). Использование фильтров в Apache (а в нём они поддерживаются, начиная с версии [...]