Архив категории ‘Nginx’
Fcgiwrap, or How to run CGI-scripts without Apache and mod_cgi
Tuesday, August 25th, 2015
It’s definitely a bad idea to get Apache running only for executing some lightweight CGI-scripts. And it’s definitely a good idea to use Nginx where possible. But Nginx while being a perfect reverse proxy just cannot run GGI because of its event-based paradigm. This is the situation where the strengths become weaknesses. But we can still deal with this by virtue of some third-party tools like fastcgi wrappers. One of such tools is fcgiwrap server and in this post I’ll show how to build it and how to use it.
Метки: Apache, Linux, Nginx
Категория: Apache, Linux, Nginx | Нет комментариев »
Проксирование RTMP-потока через Nginx
Wednesday, July 2nd, 2014
— Это не техника дошла, а я сама сюда дошла, на лыжах.
Ещё одна коротенькая заметка про Nginx. На этот раз про то, как спроксировать RTMP-стриминг. Обсуждение того, зачем это может понадобиться, оставим на… никогда. Ну, например, для того, чтобы спрятать реальный источник потока.
Никаких велосипедов изобретать не надо, тем более, что существует модуль для Nginx https://github.com/arut/nginx-rtmp-module, написанный Романом Арутюняном, который поможет нам сделать то, что мы хотим, и даже намного-намного больше.
Метки: Nginx
Категория: Nginx | Нет комментариев »
Сборка Nginx в DEB-пакет
Tuesday, April 8th, 2014
Нижеследующий текст не претендует на полноту, объективность и, может быть, даже на полезность. Это просто очередной кусок скомканных заметок, которые я для себя оставляю в Evernote, а потом изредка достаю оттуда, разбавляю бестолковыми комментариями и переношу в бложик в беспочвенной надежде, что кому-нибудь пригодится. В данном случае это будет статья по сборке Nginx из исходников в Debian-пакет для размещения его на своём локальном репозитории. Этот навык полезен в том случае, когда Nginx работает на нескольких машинах и хочется удобно обновлять его сразу везде.
Впрочем, и не обязательно иметь несколько машин. Даже если речь идёт об одном сервере, хорошим тоном будет устанавливать программы через менеджер пакетов. В будущем эта привычка сможет оградить от многих проблем и добавить удобства упраления файлами. В Debian/Ubuntu от make && make install стоит отказаться ради душевного спокойствия и очистки кармы.
Так-то в большинстве случаев можно просто ставить Nginx из официальных репозиториев (или даже с LaunchPad'а, где всегда можно найти распоследнюю версию), но Nginx не умеет подключать внешние модули. Хочешь нестандартный модуль – компилируй. Этим и займёмся.
Метки: Linux, Nginx
Категория: Linux, Nginx | Нет комментариев »
ModSecurity для Nginx: проблема с двойным Charset’ом
Monday, October 21st, 2013
Не так давно я разбирался с применением ModSecurity для Nginx и даже набросал по этому поводу статью. Но в процессе эксплуатации этого решения я натолкнулся на странное поведение связки. Почему-то при работе Nginx в качестве прокси он в заголовок Content-Type ответа добавляет параметр charset независимо от того, присутствует он там уже или нет. Но беда не в этом, а в том, что к значению параметра кодировки он прибавляет случайным образом один байт, который на многих браузерах приводит к нечитаемости приходящего кириллического текста. Быстрое гугление показало, что проблему эту обнаружил не только я (раз, два), но решение для неё отсутствует в обозримых пространствах интернета.
Метки: ModSecurity, Nginx
Категория: Nginx, Security | 6 Комментариев »
Nginx, HAProxy, Varnish: мониторинг в New Relic
Tuesday, October 15th, 2013
Не так давно я писал статью по увязыванию в единое целое Nginx, Varnish и HAProxy и хотел рассмотреть также вопрос с мониторингом всего этого добра. Но пришла мне в голову идея расписать не общие возможности по мониторингу, а способы мониторить и собирать статистику по этим приложениям в довольно известном SaaS-сервисе под названием New Relic. New Relic умеет работать с помощью своих агентов практически в любых приложениях (Java, Ruby, PHP и ещё многих разных словах). Но главная вкусность таится в большом количестве отдельных плагинов для мониторинга практически чего угодно – от нашей тройки героев до Hadoop и RabbitMQ.
Метки: HAProxy, Nginx, Varnish
Категория: HAProxy, Nginx, Varnish | Нет комментариев »
Связка Nginx + Varnish + HAProxy для чайников
Monday, August 12th, 2013
Эту универсальную связку можно использовать на любых высоконагруженных проектах. Она не будет тормозить, жрать ресурсы и пыхтеть как паровоз (это кивок в сторону Apache). Она легко управляется, отлично масштабируется на любое число серверов в кластере и хорошо мониторится.
Здесь Nginx будет заниматься свои обычным делом: отдавать статику, терминировать ssl-сессии, обеспечивать rewrite url’ов и т.д. Часть трафика, подлежащую кэшированию, он будет отдавать Varnish’у, а всё остальное – на HAProxy. Varnish будет исправно кэшировать весь отдаваемый контент, лишь изредка обращаясь за обновлениями на тот же HAProxy. HAProxy будет проксировать запросы на бэкенды, балансируя нагрузку и обеспечивая механизм sticky sessions. Само собой, если бэкенд (тот же Tomcat) всего один, то HAProxy тут нам не понадобится. Но это частный случай.
Метки: HAProxy, Nginx, Varnish
Категория: HAProxy, Nginx, Varnish | Нет комментариев »
Nginx и ModSecurity
Friday, July 19th, 2013
Всем хорош Nginx, но у Apache всегда была целая россыпь козырей в рукаве, не позволявшая Nginx'у приблизиться к нему в его неимоверной крутости. Одним из таких козырей был плагин ModSecurity, про который я относительно недавно опять писал статейку. Каково же было моё удивление, тщательно перемешанное с радостью, когда я узнал, что ModSecurity теперь работает и с Nginx'ом и что этот плагин только-только вышел из беты. Радость была обоснована ещё и тем, что незадолго до того я искал какие-нибудь аналоги для использования. Тыкал палочкой Naxsi, но ничего под свои нужды так и не нашёл. А тут такой подарок.
Подарок оказался не без сюрпризов. Но обо всём по порядку.
Метки: ModSecurity, Nginx
Категория: Nginx | Нет комментариев »
Заметки об Apache, часть 4: Пишем ip-адрес в access.log, находясь за Nginx’ом
Thursday, September 20th, 2012
Если Apache стоит за reverse proxy в виде солнцеподобного Nginx'а, то без осуществления дополнительных телодвижений в access.log апача будет писаться ip-адрес Nginx'а вместо ip-адреса пользователя. В большинстве случаев такие вещи никого не волнуют, но для условных mod-rewrite'ов, для ограниченного доступа или просто для порядку можно сделать так, чтобы всё было чин по чину.
Для решения задачи понадобится модуль mod_rpaf (rpaf расшифровывается как reverse proxy add forward). Он умеет переписывать адрес отправителя при наличии заголовка X-Forwarded-For в запроса и при совпадении исходного адреса со списком адресов прокси.
Для этого прикручиваем к Apache модуль mod_rpaf. Для deb-дистров это выглядит так:
Метки: Apache, Nginx
Категория: Apache, Nginx | 1 Комментарий »
XHProf: профилирование PHP
Friday, April 27th, 2012
Если приходится иметь дело с web-приложениями, написанными на php, то надо быть готовым разбираться с тем, почему приложение работает медленно, откуда растут ноги у тормозов, почему растёт использование системных ресурсов при увеличении нагрузки и так далее. Тут очень пригодятся инструменты, позволяющие собрать кое-какую статистику о различных аспектах работы приложения.
Особую прелесть приобретает этот процесс, если ты не являешься автором приложения, и оно представляет для тебя просто большой закрытый чёрный ящик. Тогда профилирование приложения без тщательного исследования кода позволит проделать в чёрном ящике дырочку для нашего любопытного взгляда.
Метки: Drupal, Nginx, PHP
Категория: Drupal, Nginx, PHP, Web-dev | Нет комментариев »
Drupal: остаёмся без Apache. Nginx + php_fpm
Friday, March 16th, 2012
Конечно, лучший индеец – это мёртвый индеец.
Связка вида Apache + nginx всегда была для меня чем-то самим собой разумеющимся. Nginx отлично раздаёт статику, но не имеет поддержки php, perl, ajp и ещё многого нужного. Так бы и продолжалось дальше, но в какой-то момент я всё таки решил выкинуть одно звено из этой цепочки. И слабым звеном был признан Apache, не столько потому, что для работы сайта на Drupal он оказался совсем необязательным, а скорее из желания поэкспериментировать.
Целью эксперимента при этом вовсе не является желание ускорить работу сайта. Это всё-таки не Perl, где при переходе на FastCGI появляется изрядная прибавка в скорости выполнения, щедро оплачиваемая необходимостью переписывать код для совместимости с FastCGI. Но зато мы должны получить большую нагрузоустойчивость и меньший расход оперативной памяти сервера.
Метки: Drupal, Nginx, PHP
Категория: Drupal, Nginx, Web-dev | 2 Комментариев »