Обновить
44.69

Nginx *

Веб-сервер и почтовый прокси-сервер

Сначала показывать
Порог рейтинга
Уровень сложности

Недокументированные возможности secure_link

Время на прочтение2 мин
Количество просмотров14K
  Начиная с версии 0.8.50 в модуле Nginx secure_link появилось значительное улучшение по защите ссылок от подделывания. Как ни странно, новые возможности до сих пор не отражены в официальной документации [1]. Описание на английском можно найти на сайте Nginx Community [2], а также пояснения Сысоева по данным изменениям [3]. Код на PHP для генерации защищённых ссылок можно найти в форуме по nginx [4].
 В общем, новшество выглядит так:
Читать дальше →

Релиз Nginx CT++ Module 0.5 — высокопроизводительного модуля-шаблонизатора для веб-сервера

Время на прочтение2 мин
Количество просмотров3.4K
Первоначально хотел оформить как топик-ссылку, но тогда не получилось бы вставить картинку:

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

Позднее, как появится свободное время, напишу более подробную пошаговый HowTo, что вообще можно и что нужно делать с модулем, как можно представить MVC в виде: M — ваши сервисы, V — этот модуль и C — Nginx.
Читать дальше →

Не nginx`ом единым…

Время на прочтение1 мин
Количество просмотров926
12 апреля уже позади, как и релиз 1.0 версии nginx`а ) Вспоминал времена «до» nginx`а. Соответственно, на моём опыте. Апач в то время уже не очень рулил, а если и рулил, то обрезанный, без всяких реврайтов и htaccess`ов. И вдруг вспомнил замечательный сервер 0w (ZeroWait), от создателя счётчиков ракса (ныне ли.ру), Максима Зотова. Вроде как работа над сервером завершилась 3 года назад, но вот что интересно. Как и nginx, 0w не стремился к мажорным цифрам и релизам. Приятно ведь ) приятно что у нас такие разработчики. И ведь посмотрите. Самый быстрый веб сервер — русский. Реализация fastcgi для php — русская. Самый быстрый шаблонизатор, Blitz — русский.
Вот до чего доводит голод и отсутсвие железных ресурсов русских разработчиков…

Вышел Nginx 1.0

Время на прочтение1 мин
Количество просмотров1.3K


Сегодня, в день космонавтики, Игорь Сысоев выпустил стабильную версию веб-сервера Nginx 1.0.

Список изменений по сравнению с предыдущей версией:
  • Исправление: cache manager мог нагружать процессор после
    переконфигурации.
    Спасибо Максиму Дунину.
  • Исправление: директива «image_filter crop» неправильно работала в
    сочетании с «image_filter rotate 180».
  • Исправление: директива «satisfy any» запрещала выдачу
    пользовательской страницы для 401 кода.

Репозитарий доступен по адресу svn://svn.nginx.org. Инструкция по установке из исходников.

Скачать rpm для CentOS 5 можно здесь (репозиторий CentALT).

В комментариях к этому посту есть ссылки на пакеты и разъяснения по установке для некоторых других дистрибутивов Linux.

Порт nginx 1.0.0 на FreeBSD здесь. Автоновости

http_handlersocket_json_module

Время на прочтение3 мин
Количество просмотров1.8K
О назначении модуля можно догодаться из названия. О HandlerSocket говорят много и на разных языках (в основном на японском, английском и последнее время немного на русском).
Модуль NGX_HTTP_HANDLERSOCKET_JSON_MODULE обращается к данным MySQL через протокол HandlerSocket и отдает данные в формате JSON. Область применения AJAX.
Исходники

О конфигурации, особенностях и ограничениях можно почиать ниже.
Читать дальше →

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

Время на прочтение5 мин
Количество просмотров9.8K




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

Модуль ustats: статистика запросов к бэкендам

Время на прочтение5 мин
Количество просмотров8.3K
Приветствую!

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

Читать дальше →

Ускоряем раздачу фоток

Время на прочтение8 мин
Количество просмотров14K

С проблемой медленной отдачи статического контента рано или поздно сталкивается каждый сисадмин.

Проявляется это приблизительно так: иногда 3Kb картинка грузится так, как будто бы она весит 3Mb, на ровном месте начинают «залипать» (отдаваться очень медленно) css-ы и JavaScript-ы. Вы нажимаете ctrl + reload — и уже, вроде, проблемы нет, потом спустя всего несколько минут все повторяется опять.

Не всегда истинная причина «тормозов» очевидна и мы косо поглядываем то на nginx, то на хостера, то на «забитый» канал, то на «тормозной» или «глючный» браузер :)

На самом деле проблема в несовершенстве современного винчестера, который до сих пор не расстался с механическими подсистемами вращения шпинделя и позиционирования головок.

В этой статье я предложу Вам свое решение этой проблемы, основанное на практическом опыте использования SSD дисков совместно с web-сервером nginx.
Читать дальше →

Анонсирован выпуск Nginx 0.9

Время на прочтение1 мин
Количество просмотров834


Игорь Сысоев анонсировал выпуск Nginx версии 0.9.1.

Основные изменения по сравнению с недавно ставшей стабильной веткой 0.8.x пока невелики, но спешу напомнить, что в Unstable обкатываются новые «фичи» и она постепенно «обрастает» функционалом, в Stable ветку же вносятся только изменения связанные с некорректной работой Nginx либо Security фиксы.

Читать дальше →

Серверный редирект на мобильную версию сайта

Время на прочтение2 мин
Количество просмотров37K
image
Предлагаю вашему вниманию простое и дешевое (по ресурсам) решение для перенаправления пользователей мобильных устройств на легкую версию сайта. Решение ориентировано на highload сайты, оптимизация которых основана на кешировании гостевых запросов.
Проверка, является ли клиент мобильным устройством, производится веб-сервером nginx и в случае успеха клиент перенаправляется на поддомен или локейшн. Это существенно экономит ресурсы и позволяет добиться большей масштабируемости по сравнение с PHP методами.
Читать дальше →

Nginx + CentOS 5.5 + aio

Время на прочтение2 мин
Количество просмотров2.6K
Не многие знают, что в ядро RHEL 5.5 ( начиная с 2.6.18-194.8.1 ), а соответственно и в CentOS 5.5 был бэкпортирован механизм eventfd, который используется в nginx для aio.

Казалось бы все хорошо, ан нет, в списках рассылки несколько человек отписалось, что имеет место «утечка сокетов» которую устраняют 4 патча от Maxim Dounin 2 из которых уже вошли в nginx 0.8.53.
Читать дальше →

Ветка 0.8.x стала стабильной

Время на прочтение1 мин
Количество просмотров746
27 сентября Игорь Сысоев опубликовал новую стабильную версию веб-сервера nginx-0.8.51. Сообщение в списке рассылки:
Статус версии 0.8.x изменён на стабильный.
Во время разработки этой версии, среди прочего, появились

* поддержка именнованых выделений в регулярных выражениях,
* поддержка файлового AIO во FreeBSD и Linux,
* SSL CRL,
* модули SCGI и uwsgi.


UPD: уже 0.8.52

Автоматизация создания виртуального хоста для web-разработки на базе Apache+Nginx

Время на прочтение5 мин
Количество просмотров11K

Как быстро создать виртуальнй хост и структуру папок одной строкой в терминале


Так уж сложилось, что для web-разработки я использую отдельный сервер на базе Debian. В первую очередь это обусловлено тем, что я часто работаю вне дома, а так-же это позволяет совместно работать над проектом с коллегами.
Раньше мне приходилось вручную создавать директории для сайта, копировать и править конфиги. Я тратил на это кучу времени и иногда ошибался, а потом судорожно искал где и что я упуслил.

Не так давно я задумался над автоматизацией процесса создания виртуальных хостов. Порыв немного в интернетах, и заодно вспомнив bash, родился скрипт, который избавил меня от рутины и ошибок одновременно.
Читать дальше →

Ближайшие события

Кеширование блоков с помощью nginx

Время на прочтение6 мин
Количество просмотров15K
nginx + SSIМногим разработчикам знакома ситуация когда кешировать страницы сайта, скажем, на 5-10 минут нельзя всего из-за одного небольшого блочка, актуальность которого нужно поддерживать если не в реальном времени, то с временем «старения» не больше 5-10 секунд. При этом посещаемость сайта продолжает расти, растет время генерации страниц и c этим надо что-то делать…
  • Вариант решения 1: Подкрутить то, до чего не доходили руки последнее полгода. Все Вас поймут и передвинут сроки на другие задачи. Вы будете в роли «Супермена» один спасать сайт от непомерной нагрузки, решая проблему «бесплатно» (без доп. вливаний в оборудование). Вам может пригодиться статья «Тюнинг nginx».
     
  • Вариант решения 2: Улучшить техническую базу (докупить мозгов на сервер, улучшить дисковую систему, поставить под БД отдельный сервер). В принципе проблема не решена, а скорее отложена. Теперь у Вас есть время «окопаться» и подготовиться ко второй волне наплыва нагрузки, она будет больше и накроет сильнее.
     
  • Вариант решения 3: Ваш вариант, о котором я, вероятно, узнаю из комментариев.
     
Позвольте предложить и мне проверенное и относительно простое решение на базе одной из старейших технологий в Web-разработке.
Читать дальше →

Генератор миниатюрок из Nginx-а

Время на прочтение3 мин
Количество просмотров27K
Итак, сегодня мы соберём генератор миниатюрок на базе любимого народом веб-сервера — nginx-а. Что примечательно, сделаем мы это без единого гвоздя, т.е. без единой строчки кода, не считая конфигурации.
Что ж приступим...

Nginx + IPv6

Время на прочтение2 мин
Количество просмотров25K
Недавно написал топик про поддержку IPv6 в Windows 7/Vista/XP (это тут). Захотелось сделать поддержку IPv6 на своём сервере, где хостируются сайты, в итоге вот что получилось.
Читать дальше →

Мастер-класс Игоря Сысоева в Киеве

Время на прочтение1 мин
Количество просмотров1.2K
Я подумал что кому-то это мероприятие может быть интересно. Не пиар и не агитация.

29 мая, в субботу, в Киеве состоится мастер-класс Игоря Сысоева. Сначала будет небольшое выступление, а потом ответы на вопросы всех пришедших.

А если кто-то таки решит пойти, то регистрация тут, а с кодом habrahabr скидка 10%.

Блокируем китайцев

Время на прочтение1 мин
Количество просмотров9.2K
Ниже пойдет текст достойный пера К.О.

Китайский трафик велик и беспощаден. Когда какая-нибудь смешная или не очень картинка попадает в китайские блоги, провайдер colocation начинает обижаться и рассказывать про несоответствие соотношений 3 к 2 российского и зарубежного трафика.

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

Примеров реализации есть несколько (ngx_http_geo_module, ngx_http_geoip_module или обычным deny), наиболее эффективный с помощью ngx_http_geo_module и базы wipmania (http://www.wipmania.com/ru/base/)

Облегчение на одном из серверов.
image

Читать дальше →

Nginx + серверный Javascript

Время на прочтение7 мин
Количество просмотров10K

… или как перейти с PHP + JavaScript на JavaScript + JavaScript


Идея реализовать проект на сервер-сайд JavaScript была уже давно. Проблема была в отсутствии подходящего серверного программного обеспечения. Существующие открытые проекты не устраивали по разным причинам. Устанавливать дополнительный модуль для Apache было не самой хорошей идеей, потому что производительность и оптимизация использования памяти при этом были бы не на высоте. С помощью jslibs можно настроить FastCGI, но очень не хотелось оставлять ни малейших шансов «502 Bad Gateway», проект ngx_http_js_module так и остался в зачаточной стадии, а ngxv8 недостаточно развит для реализации реальных приложений. Поэтому я решил сделать собственную реализацию серверного javascript. Причем постараться сразу запрограммировать всю базовую функциональность, чтобы можно было ее тестировать в условиях, близких к реальности.

В качестве основного веб-сервера было решено использовать nginx, в качестве «движка» javascript — TraceMonkey (javascript-движок из Mozilla Firefox, бывший SpiderMonkey), и написать модуль для nginx, который бы их «склеил». Ничего сложного, на первый взгляд, но очень хотелось иметь определенную функциональность (и это получилось!), чтобы можно было нормально работать дальше. Большинство идей заимствованы, кстати, из PHP.
  • Корректная работа в multi-thread условиях
  • Возможность выполнять скрипт, указанный в URL, а не настраивать отдельно скрипт-обработчик и функцию-обработчик для каждого location
  • Возможность вызывать include(), sleep(), alert() из скрипта, использовать __FILE__ и __LINE__
  • Ограничение памяти, выделяемой каждому скрипту, и времени работы скрипта
  • Защита открываемых скриптом файлов, указав в настройках список разрешенных папок. Примерно как open_basedir в PHP
  • Автоматический разбор данных запроса (параметров GET, POST, и, конечно же, cookies), чтобы не писать обработку данных на javascript
  • Поддержка запросов application/x-www-form-urlencoded и multipart/form-data
  • Поддержка basic-авторизации
  • Работа с базами данных (в первую очередь, MySQL и SQLite)
  • Работа с файловой системой: чтение и запись файлов, проверка существования файлов, и т.п.
  • Кэширование байт-кода скриптов, как, например, в eAccelerator
Плюс некоторые другие возможности (инструменты для шаблонизации, для создания конфигурационных файлов, и т.п.), но их в основной список я не включил — их позволяют сделать языковые возможности TraceMonkey.

От слов — к делу! Как скомпилировать и настроить, как протестировать и сравнить...

Читать дальше →

nginx — настройка фронтенда к ~username — public_html

Время на прочтение2 мин
Количество просмотров4.4K
Конечно понимаю, что это может быть и не нужно никому, коль не нашел должного решения на просторах Интернета. Однако раньше, когда компьютеры были большими, а мы маленькими, были популярны так называемые домашние странички. У гордого индейца даже модуль под это дело есть — userdir.
Недавно (июнь, 2009) решил индейца загнать в бекенд, а фронтендом настроить nginx. Так вот готового решения для организации фронтенда для nginx'а не обнаружил. Недолго думая, почесал подбородок и накатал следующую конфигурацию к nginx'у. Представьте испытанное мною счастье когда это заработало.
Итак, задача заставить в фронтенде отдавать содержимое из хомдира пользователя — /home/user/public_html. Запрос к которому в браузере выглядит как site.name/~user:
Читать дальше →

Вклад авторов