Как стать автором
Обновить
31.51

Nginx *

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

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

Что нового в Angie 1.9 и что ожидать от 1.10?

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров1.9K

Возможно, вы уже читали в новостях, что накануне Дня космонавтики вышел новый стабильный выпуск Angie 1.9.0, форка nginx, который продолжает развивать команда бывших разработчиков nginx. С интервалом примерно в квартал мы стараемся выпускать новые стабильные версии и радовать пользователей множеством улучшений. Данный релиз не стал исключением, но одно дело читать сухой лог изменений, а совсем другое познакомиться с функциональностью подробнее, узнать, как и в каких случаях её можно применить.

Список нововведений, на которых мы остановимся подробнее:

— Сохранение зон разделяемой памяти с индексом кэша на диск;
— Персистентный переход на резервную группу проксируемых серверов;
— 0-RTT в потоковом модуле;
— Новый статус busy у проксируемых серверов во встроенном API статистики;
— Улучшения ACME‑модуля, позволяющего автоматически получать TLS‑сертификаты Let's Encrypt и др.;
— Кэширование TLS‑сертификатов при использовании переменных.

Читать далее

Новости

Как защитить интернет-магазин от перегрузок: RPS, масштабирование и отказоустойчивость

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров773

Перегрузка интернет-магазина – головная боль владельца бизнеса. Сайт тормозит, корзина зависает, клиенты не могут оформить заказ. Почему это происходит? Как предотвратить коллапс системы в разгар распродаж?

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

Читать далее

Расширение возможностей веб-сервера при помощи WASM на примере Angie

Уровень сложностиСложный
Время на прочтение19 мин
Количество просмотров2.4K

Наверное, не секрет, что одна из причин популярности nginx — это развитая экосистема сторонних модулей. Модули позволяют не просто настраивать какие-то детали обработки запроса, но и глубоко изменять поведение сервера.

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

Теперь в этот набор добавляется ещё и модуль WASM, который мы разработали для нашего веб-сервера Angie (здесь и далее ссылки на нашу документацию). Зачем понадобился WASM на сервере, чем нас не устраивают существующие методы расширения и что в итоге получилось?

Данная статья — транскрипт выступления Владимира Хомутова на конференции HighLoad++. Владимир с 2012 года разработчик nginx, а с 2022 разработчик Angie.

Читать далее

Решаем проблемы роста нагрузки в умных домах

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

Всем привет! Меня зовут Вадим Трегубов, я техлид бекэнда платформы умного дома в SberDevices. Я расскажу о проблемах роста нагрузки, возникающие у проектов интернета вещей и решениях, помогают их избежать.

Всё началось с того, что мы хотели избавиться от vendor-lock. К 2022 году мы уже наработали свои платформенные сервисы: управление голосом, создание сценария автоматизации. Хотелось их использовать еще шире, глубже и качественнее. Плюс ко всему, мы бы имели полный цикл поддержки устройств: выпуск их на рынок, обновление прошивок, докатка и улучшение пользовательского опыта.

Учитывая особенности работы с IoT, мы сформулировали требования к архитектуре...

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

Истории

Готовим геотаргетинг на nginx + GeoIP2 и связываем с локализацией в Next.js

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1.7K

В этой статье поделюсь быстрым способом настройки геотаргетинга на nginx + GeoIP2 в связке с локализацией Next.js на примере решения реальной задачи.

Вы узнаете как подключить и настроить GeoIP2 к nginx, как приоритизировать и настроить критерии выбора домена и локали, и как подружить это с Next.js

Читать далее

Lua в Nginx: динамическая маршрутизация запросов

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.4K

Привет, Хабр!

Сегодня рассмотрим, как использовать Lua в Nginx: динамическую маршрутизацию, балансировку трафика, подмену заголовков и трансформацию тела запроса в реальном времени. OpenResty и lua-nginx-module позволяют перенести часть логики на уровень веб-сервера, сокращая задержки и повышая гибкость.

Читать далее

Как NGINX обрабатывает TCP/UDP

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

Привет, Хабр!

В этой статье рассмотрим, как NGINX обрабатывает TCP/UDP-соединения: от принятия запроса до логирования.

Читать далее

Коротко про то, как написать кастомный модуль для Angie

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров355

Привети, Хабр!

Сегодня рассмотрим, как написать кастомный модуль для Angie — форка Nginx, который уже давно перерос в самостоятельного монстра с кучей фич.

Читать далее

Стильный современный «autoindex» в Angie/nginx без sms и сторонних модулей

Уровень сложностиПростой
Время на прочтение24 мин
Количество просмотров3.2K

Авто‑индекс — это функциональность HTTP‑сервера, позволяющая при обращении к каталогу на файловой системе автоматически выводить список содержащихся в нем файлов.

Поводом для этой статьи стал вопрос из нашего Telegram‑чата поддержки (присоединяйтесь — он открыт для всех!): «Почему в репозиториях Angie среди множества сторонних модулей отсутствует Nginx Fancy Index?».

Меня удивило, что кто‑то пользуется устаревшим модулем, поскольку ещё в 2014 году я добавил во встроенный в nginx модуль «autoindex» поддержку форматов JSON и XML, что делает сторонние решения избыточными.

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

Читать далее

Пишем модули для Nginx

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

Привет, Хабр!

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

Начнем с базового модуля.

Читать далее

Балансировка в Angie

Уровень сложностиСредний
Время на прочтение20 мин
Количество просмотров2.8K

Статья посвящена обзору возможностей балансировки в трёх продуктах: Angie, Angie PRO, Angie Load Balancer в составе Angie ADC. Angie - бесплатный продукт с открытым исходным кодом, остальные два - коммерческие продукты. Некогда Angie был создан как форк NGINX.

Это первая статья из цикла статей, не знаю пока насколько длинного, о балансировке в Angie. В ней я постарался сделать обзор балансировки в целом, не касаясь конкретных балансировщиков и подробностей их конфигурирования. Вместо этого рассказываю, что между ними есть общего, принципы работы. Во второй статье планирую перечислить все балансировщики продуктов с описанием того, что они могут, для чего предназначены и некоторых их неявных особенностей. Подробностей конфигурирования по-прежнему не будет, это и так описано в документации. А тут хотелось бы скорее целостного обзора, нежели описания всех опций.

Читать далее

Проблемы Nginx в организации микросервисной архитектуры IT-проекта. Способы их решения

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров6.4K

Микросервисная архитектура стала стандартом для современных IT-проектов и позволяет создавать автономные сервисы с независимым жизненным циклом. В такой среде Nginx часто используется как балансировщик нагрузки и обратный прокси, но при этом возникают определенные проблемы. Для начала их перечислим, а затем подробно рассмотрим способы решения.

Читать далее

Архитектура для средненагруженных приложений: делюсь опытом и ищу ваши советы

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров6.6K

Привет, коллеги! Меня зовут Санжар, я бэкенд-разработчик с опытом в настройке серверной инфраструктуры и контейнеризации для средних проектов. Сегодня хочу поделиться схемой архитектуры, которую я часто использую в своих проектах. Это не руководство к действию и не утверждение, что так нужно делать. Скорее, это возможность для меня получить обратную связь и узнать, как сделать лучше. Так что прошу вас, пишите свои идеи и советы в комментариях — это очень важно для меня. 🙂

Читать далее

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

19 марта – 28 апреля
Экспедиция «Рэйдикс»
Нижний НовгородЕкатеринбургНовосибирскВладивостокИжевскКазаньТюменьУфаИркутскЧелябинскСамараХабаровскКрасноярскОмск
22 апреля
VK Видео Meetup 2025
МоскваОнлайн
23 апреля
Meetup DevOps 43Tech
Санкт-ПетербургОнлайн
24 апреля
VK Go Meetup 2025
Санкт-ПетербургОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
14 мая
LinkMeetup
Москва
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область

Битва двух якодзун: Grafana K6 vs Django DRF + Nginx

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров5K

Привет, с вами снова Егор, Tech Lead компании ИдаПроджект :) Если забыли, напомню, что я занимаюсь стратегией, процессами и командами в направлении backend разработки.

Сегодня мы вместе сделаем минимальное приложение на django + DRF и проведем нагрузочное тестирование с помощью Grafana K6. Также попробуем применить кэширование в Nginx. Будем тестировать как GET-запросы, которые можно и нужно кэшировать, так и POST-запросы, которые кэшировать нельзя.

Погнали.

Читать далее

Деплоймент нескольких ASP.Net Core-приложений на VPS сервере и настройка доступа к ним по доменному имени 3-го уровня

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2.9K

Деплоймент нескольких ASP.Net Core-приложений на VPS сервере с Ubuntu и настройка доступа к ним по доменному имени 3-го уровня.

Читать далее

Как и зачем мы забенчили производительность сетевого стека

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

Привет, Хабр! На связи Наташа, UX-исследователь в Selectel, с технической темой на дизайнерском. Последние полгода я исследую опыт взаимодействия с серверной операционной системой. В ходе исследований мы увидели спрос на повышение производительности сетевого стека и провели некоторые эксперименты, чтобы понять реализуемость и целесообразность внедрения технологий обхода ядра. Это история о том, как мы разгоняли и без того шустрый Nginx и тестировали результат внедрения технологии kernel bypass.
Читать дальше →

Простая настройка CI/CD для Фронтенда и Бэкенда в Github без сторонних инструментов бесплатно в 2024 году

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров12K

Всем привет! Недавно решил попробовать, что из себя представляет Flutter Web, подумал, может попробовать сделать бота для Telegram, и заодно настроить простейший CI/CD для отдельного фронтенд- и бэкенд-проектов. Однако в интернете я не нашёл простой и исчерпывающей инструкции или процесса.

Поэтому задача этой статьи — решить эту проблему! Сделать автоматическую сборку, тестирование и деплой на сервер, и всё это — без необходимости городить SSH-ключи, Github-токены и подключать сторонние решения. Всё на минималках, без лишней бюрократии.

Читать далее

CBLT — безопасный, быстрый и минималистичный веб-сервер на языке программирования Rust

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров7.5K

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

Чтобы погрузиться сильнее в язык, вместо пет-проекта я начинаю писать свои библиотеки для работы с базами данных (ORM), JSON, акторами, MVC веб-фреймворком, логированием и т.д. Библиотеки, которые вряд ли будут кому-то нужны, но они помогут мне лучше понять язык программирования. На удивление, с языком Rust я добрался до написания своего веб-сервера. Раньше такого не было. Думаю, это из-за того, что Rust — это язык системного программирования и грех на нём не попробовать заняться оптимизацией перформанса.

В итоге я столкнулся с тем, что Rust не имеет аналогов Nginx, Lighttpd, Caddy, HAProxy, Apache, Tomcat, Jetty и т.д. Все эти веб-сервера написаны на C, Go, Java и т.д. Имеются только веб-фреймворки: Actix, Axum, Rocket, Hyper и т.д.

В целом я прикинул, что обычно я использую Nginx для следующих целей:

1. TLS для доменов

2. Проксирование запросов на бэкэнд

3. Раздача статических файлов

В итоге решил написать свою реализацию веб-сервера на Rust.

Читать далее

Автоматизация деплоя React-приложения на VPS с помощью Jenkins и Nginx: Пошаговое руководство

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров1.1K

Автоматизация деплоя React-приложения на VPS с Jenkins и Nginx: настройка вебхуков GitHub и триггеров для запуска деплоя при каждом изменении в коде.

Читать далее

Два года Angie

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров11K

Всего пару дней назад, 26 октября 2024 года, мы отметили 2 года с момента первого релиза опенсорс версии веб-сервера Angie. Кажется, что именно сейчас наиболее уместно поговорить с вами о том, почему идея заработать на опенсорсе в России оказалась «так себе идеей». И почему мы, тем не менее, от развития опенсорс версии Angie не отказались. И не откажемся.

Читать далее
1
23 ...