Архив категории ‘Nginx’

Fcgiwrap, or How to run CGI-scripts without Apache and mod_cgi

Tuesday, August 25th, 2015

This buzz is not without the reason.

Soviet cartoon «Winnie the Pooh»

pooh-buzz

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.

(more…)

Метки: , ,
Категория: Apache, Linux, Nginx | Нет комментариев »


Проксирование RTMP-потока через Nginx

Wednesday, July 2nd, 2014

— Ничего себе! Вашу маму и там, и тут передают. До чего техника дошла!
— Это не техника дошла, а я сама сюда дошла, на лыжах.

«Зима в Простоквашино»

rtmp-proxyЕщё одна коротенькая заметка про Nginx. На этот раз про то, как спроксировать RTMP-стриминг. Обсуждение того, зачем это может понадобиться, оставим на… никогда. Ну, например, для того, чтобы спрятать реальный источник потока.

Никаких велосипедов изобретать не надо, тем более, что существует модуль для Nginx https://github.com/arut/nginx-rtmp-module, написанный Романом Арутюняном, который поможет нам сделать то, что мы хотим, и даже намного-намного больше.

(more…)

Метки:
Категория: Nginx | Нет комментариев »


Сборка Nginx в DEB-пакет

Tuesday, April 8th, 2014

И тут на Ёжика, шурша и осыпаясь, обрушилась тишина.

Сергей Козлов «Ёжик в тумане»

nginx deb package

Нижеследующий текст не претендует на полноту, объективность и, может быть, даже на полезность. Это просто очередной кусок скомканных заметок, которые я для себя оставляю в Evernote, а потом изредка достаю оттуда, разбавляю бестолковыми комментариями и переношу в бложик в беспочвенной надежде, что кому-нибудь пригодится. В данном случае это будет статья по сборке Nginx из исходников в Debian-пакет для размещения его на своём локальном репозитории. Этот навык полезен в том случае, когда Nginx работает на нескольких машинах и хочется удобно обновлять его сразу везде.

Впрочем, и не обязательно иметь несколько машин. Даже если речь идёт об одном сервере, хорошим тоном будет устанавливать программы через менеджер пакетов. В будущем эта привычка сможет оградить от многих проблем и добавить удобства упраления файлами. В Debian/Ubuntu от make && make install стоит отказаться ради душевного спокойствия и очистки кармы.

Так-то в большинстве случаев можно просто ставить Nginx из официальных репозиториев (или даже с LaunchPad'а, где всегда можно найти распоследнюю версию), но Nginx не умеет подключать внешние модули. Хочешь нестандартный модуль – компилируй. Этим и займёмся.

 

(more…)

Метки: ,
Категория: Linux, Nginx | Нет комментариев »


ModSecurity для Nginx: проблема с двойным Charset’ом

Monday, October 21st, 2013

Купленному покупатель платит по собственному усмотрению, а оказывающий услугу цену назначает сам.

Анджей Сапковский «Последнее желание»

nginx-modsec-charset

Не так давно я разбирался с применением ModSecurity для Nginx и даже набросал по этому поводу статью. Но в процессе эксплуатации этого решения я натолкнулся на странное поведение связки. Почему-то при работе Nginx в качестве прокси он в заголовок Content-Type ответа добавляет параметр charset независимо от того, присутствует он там уже или нет. Но беда не в этом, а в том, что к значению параметра кодировки он прибавляет случайным образом один байт, который на многих браузерах приводит к нечитаемости приходящего кириллического текста. Быстрое гугление показало, что проблему эту обнаружил не только я (раз, два), но решение для неё отсутствует в обозримых пространствах интернета.

(more…)

Метки: ,
Категория: Nginx, Security | 6 Комментариев »


Nginx, HAProxy, Varnish: мониторинг в New Relic

Tuesday, October 15th, 2013

Простейшие движения ума, к которым прибегал этот человек, чтобы заслониться от безнадежности человеческой судьбы, поражали своей абсурдной эффективностью.

Виктор Пелевин «Бэтман Аполло»

nr-hnv

Не так давно я писал статью по увязыванию в единое целое Nginx, Varnish и HAProxy и хотел рассмотреть также вопрос с мониторингом всего этого добра. Но пришла мне в голову идея расписать не общие возможности по мониторингу, а способы мониторить и собирать статистику по этим приложениям в довольно известном SaaS-сервисе под названием New Relic. New Relic умеет работать с помощью своих агентов практически в любых приложениях (Java, Ruby, PHP и ещё многих разных словах). Но главная вкусность таится в большом количестве отдельных плагинов для мониторинга практически чего угодно – от нашей тройки героев до Hadoop и RabbitMQ.

(more…)

Метки: , ,
Категория: HAProxy, Nginx, Varnish | Нет комментариев »


Связка Nginx + Varnish + HAProxy для чайников

Monday, August 12th, 2013

Как же управлять такой ордой? – пораженно думал Михаил. Чем же прокормить такую бездну праздного народа?

Алексей Иванов «Сердце Пармы»

Эту универсальную связку можно использовать на любых высоконагруженных проектах. Она не будет тормозить, жрать ресурсы и пыхтеть как паровоз (это кивок в сторону Apache). Она легко управляется, отлично масштабируется на любое число серверов в кластере и хорошо мониторится.

Здесь Nginx будет заниматься свои обычным делом: отдавать статику, терминировать ssl-сессии, обеспечивать rewrite url’ов и т.д. Часть трафика, подлежащую кэшированию, он будет отдавать Varnish’у, а всё остальное – на HAProxy. Varnish будет исправно кэшировать весь отдаваемый контент, лишь изредка обращаясь за обновлениями на тот же HAProxy. HAProxy будет проксировать запросы на бэкенды, балансируя нагрузку и обеспечивая механизм sticky sessions. Само собой, если бэкенд (тот же Tomcat) всего один, то HAProxy тут нам не понадобится. Но это частный случай.

(more…)

Метки: , ,
Категория: HAProxy, Nginx, Varnish | Нет комментариев »


Nginx и ModSecurity

Friday, July 19th, 2013

Всем хорош Nginx, но у Apache всегда была целая россыпь козырей в рукаве, не позволявшая Nginx'у приблизиться к нему в его неимоверной крутости. Одним из таких козырей был плагин ModSecurity, про который я относительно недавно опять писал статейку. Каково же было моё удивление, тщательно перемешанное с радостью, когда я узнал, что ModSecurity теперь работает и с Nginx'ом и что этот плагин только-только вышел из беты. Радость была обоснована ещё и тем, что незадолго до того я искал какие-нибудь аналоги для использования. Тыкал палочкой Naxsi, но ничего под свои нужды так и не нашёл. А тут такой подарок.

Подарок оказался не без сюрпризов. Но обо всём по порядку.

(more…)

Метки: ,
Категория: 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-дистров это выглядит так:

 

(more…)

Метки: ,
Категория: Apache, Nginx | 1 Комментарий »


XHProf: профилирование PHP

Friday, April 27th, 2012

Черную кошку в темной комнате искать бесполезно, особенно если ее там нет, а черного бультерьера – небезопасно, особенно если он там есть.

Народная мудрость

Если приходится иметь дело с web-приложениями, написанными на php, то надо быть готовым разбираться с тем, почему приложение работает медленно, откуда растут ноги у тормозов, почему растёт использование системных ресурсов при увеличении нагрузки и так далее. Тут очень пригодятся инструменты, позволяющие собрать кое-какую статистику о различных аспектах работы приложения.

Особую прелесть приобретает этот процесс, если ты не являешься автором приложения, и оно представляет для тебя просто большой закрытый чёрный ящик. Тогда профилирование приложения без тщательного исследования кода позволит проделать в чёрном ящике дырочку для нашего любопытного взгляда.

(more…)

Метки: , ,
Категория: Drupal, Nginx, PHP, Web-dev | Нет комментариев »


Drupal: остаёмся без Apache. Nginx + php_fpm

Friday, March 16th, 2012

Конечно, лучший индеец – это мёртвый индеец.

— Харуки Мураками «Охота на овец»

No Apache
Связка вида Apache + nginx всегда была для меня чем-то самим собой разумеющимся. Nginx отлично раздаёт статику, но не имеет поддержки php, perl, ajp и ещё многого нужного. Так бы и продолжалось дальше, но в какой-то момент я всё таки решил выкинуть одно звено из этой цепочки. И слабым звеном был признан Apache, не столько потому, что для работы сайта на Drupal он оказался совсем необязательным, а скорее из желания поэкспериментировать.

Целью эксперимента при этом вовсе не является желание ускорить работу сайта. Это всё-таки не Perl, где при переходе на FastCGI появляется изрядная прибавка в скорости выполнения, щедро оплачиваемая необходимостью переписывать код для совместимости с FastCGI. Но зато мы должны получить большую нагрузоустойчивость и меньший расход оперативной памяти сервера.

(more…)

Метки: , ,
Категория: Drupal, Nginx, Web-dev | 2 Комментариев »