войти зарегистрироваться

NginxПроксируем Cookies на Nginx при помощи модуля lua-nginx



Я уже писал о том, как с помощью Nginx трансформировать контент на лету. С момента публикации статьи на базе описанного метода запущен и развивается реальный проект ecommerce. Помимо перевода и трансформации также реализован и SEO рерайт по заветам руководства для начинающих от Google.

Однако, до полной победы изделия русских программистов над заграничным контентом, не хватало одной небольшой, но очень важной вещи — проксирования Cookies.

В чем суть проблемы


Проблема заключается в том, что любой нормальный сервер приложений всегда выставляет Cookie, например для того, чтобы сохранять сессию клиента или корзину с его товаром. Если этот сервер (точнее его администратор) озабочен поддержанием определенного уровня безопасности, то он выставляет в теле Cookie домен и путь, например domain= backend.org; path=/path1. Наш Nginx запущенный в режиме Reverse Proxy замечательно меняет все ссылки в теле документов с backend.org на frontend.org, но не делает этого для кук! Это означает что браузер клиента отвергнет такие куки.

Этот вопрос с давних пор волнует умы администраторов nginx, в рассылках он всплывает по 1-2 раза в год. Большинство вопрошавших, по-видимому, решили свои проблемы подкручивая логику backendа, но не я! После очередного апдейта оригинального сайта стало понятно, что костыль с PHP + Curl тянуть больше невозможно и надо непременно найти решение с помощью Nginx!

Я вернул тему в рассылку, попутно перебирая варианты из ngx_http_perl_module и переменной $upstream_http_set_cookie, даже заглянул в дебри сорсов с призрачной надеждой написать модуль самому. Но все было неудачно пока в один прекрасный момент я не получил письмо от Mikhail Mazursky, который дал ценный совет. Благодаря этому совету я не только с легкостью решил задачу проксирования Cookie, но и получил новый инструмент, с помощью которого можно создать версию 2.0 своего проекта.

Решение


Название этого инструмента lua-nginx-module, который написан еще одним китайским самородком с корнями из Taobao. Из названия легко понять, что речь об языке скриптов Lua встроенном в Nginx — но это больше чем просто интерпретатор! Эти ребята создали полностью неблокируемую реализацию с производительностью десятки тысяч операций в секунду, которая имеет хуки ко всем событиям внутри Nginx. То что раньше можно было реализовать только написав свой модуль на C, теперь можно сделать несколькими строчками на Lua. Заинтересовались?

Блог компании AvveaПереписывание интернет-контента

Здравствуйте, уважаемые хабражители!

Это продолжение вводной статьи о персонализации Интернета. Ниже кратко описана технология, на которой основаны реализованные компанией продукты по персонализации Интернета.

Компанией Avvea разработана технология переписывания контента динамических интернет-страниц. Такая технология не нова и известна как reverse proxy. Примерами качественных reverse proxy серверов в сфере бизнеса являются разработки компаний F5 и Juniper. Технологии разработки reverse proxy серверов каждой из этих компаний прошли более чем десятилетний путь развития и направлены на поддержку ограниченного количества сложных приложений корпоративных клиентов.

Примером reversy-proxy любительского уровня можно считать свободно распространяемую разработку Glype. Таких серверов достаточно много, среди них наиболее популярны так называемые анонимайзеры.

Рассмотрим некоторые технические особенности. Главная задача reverse proxy сервера — создание виртуальной прослойки между интерфейсом браузера и клиентским программным кодом. И чем лучше эта задача решена, тем лучше итоговый reverse proxy сервер.

Блог компании AvveaУра персонализации Интернета или мой личный Интернет

Здравствуйте, уважаемые хабражители!

Под персонализацией Интернета мы подразумеваем — «изменение внешнего вида и функционального наполнения интернет-сайтов под конкретного посетителя этого сайта».

Мы разработали несколько интернет-сервисов, ориентированных на решение задач персонализации интернет-сайтов. Сейчас готовим к выходу на рынок эти продукты. Поэтому решили кратко рассказать о задачах, решаемых нашими продуктами. Чтобы потом заинтересовавшихся пригласить на бета-тестирование и получить ваши экспертные оценки.

Итак, посмотрим на следующие две задачи персонализации.

NginxТрансформация и перевод на другие языки web-сайтов на лету при помощи Nginx





В моем первом посте я описал применение Apache Traffic Server в качестве кеширующего reverse-proxy. В отзывах меня спрашивали почему не nginx? Поскольку в ATS все равно не нашлось удобного способа трансформировать контент сайта, то я решил изучить возможности Nginx. Для решения задачи пришлось углубится в дебри документации, и вот что получилось…