Обновить
32K+

Nginx *

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

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

Влияние TLS-библиотек и настроек на производительность

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели7.9K

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

Читать далее

Новости

Как перенести Docker Compose на новую VPS без даунтайма

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели12K

Совсем недавно я переносил работающий прод с одной впс на другую. Причина простая - новый провайдер давал в несколько раз больше ресурсов за те же деньги и с тем же SLA, но были две проблемы: Первая - сервисом пользовались круглосуточно, и даже несколько минут простоя были нежелательны. Вторая проблема - инфраструктура очень скромная, и подозреваю, знакомая многим: один сервер, docker compose, nginx как реверс прокси. Все легкие способы переезда отпадают сразу.

Читать далее

Я устал деплоить проекты вручную и автоматизировал этот процесс

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

Проблема
Мне как бэкэнд-разработчику приходится работать с деплоем своих проектов, каждый раз одна и та же рутина: настройка сервера, nginx, ssl, безопасность сервера(fail2ban, user), CD и многое другое. Это отнимает очень много времени.

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

Читать далее

Стриминг ZIP‑архивов на лету с nginx + mod_zip — просто, как 2 байта переслать

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

В проекте пользователям регулярно нужно скачивать наборы документов в виде архива. Изначально архивы формировались только из файлов внутри системы, но задача усложнилась, когда потребовалось добавлять внешние источники. В статье я разбираю решение на базе nginx mod_zip и потоковой генерации архива, позволяющее собирать ZIP «на лету» с минимальной нагрузкой на сервер. Также я подготовил простое демо, где можно всё попробовать самостоятельно.

Читать далее

Как мы поднимали файловое облако для команды: Seafile, HTTPS, мобильные клиенты и белый экран на Android

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

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

Читать далее

Разделение исходящего и входящего трафика по разным IP-адресам в XRAY

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

В наше непростое время... Хотя, к чему все это? Все в курсе. Переходим к технической части.

Многие знают, что XRAY умеет получать запрос от клиента на один ip адрес, а отправлять ответ с другого ip адреса. Документации на этот счет в интернете крайне немного (ну или я не умею искать). Есть образцы базовых настроек в примерах на GitHub проекта XTLS и несколько упоминаний о существовании такой фишки в статьях на Хабре без подробностей реализации. Я же попробую описать здесь теорию и настройку разделения входящего и исходящего трафика подробно и с примерами.

Зачем все это нужно?

Читать далее

Как reload ingress-nginx уронил прод. История про pids.max, threads-max и виртуалку, которая подросла

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели7.2K

Схема входящего траффика в кластер Kubernetes простая: web → Envoy Gateway → Ingress Nginx → backend. За Ingress Nginx, помимо обычного HTTP, живут долгоживущие WebSocket-соединения. Штатная нагрузка - около 100 RPS. Ничего экзотического.

В один прекрасный день всё в кластере легло. Клиенты получают 503/500. В логах Envoy - флаг UF и upstream_reset_before_response_started{connection_timeout}. То есть ingress-nginx просто перестал отвечать.

Дальше - два часа разбора и довольно красивая цепочка причин, которая началась с банального reload, а закончилась на том, как ядро считает лимит потоков при старте виртуалки.

Читать далее

Как превратить один VPS в платформу для деплоя нескольких проектов без боли и Kubernetes

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

Как держать несколько проектов на одном VPS так, чтобы каждый работал на своём домене с HTTPS, а все порты были закрыты снаружи — без Kubernetes и ручных конфигов Nginx. Nginx Proxy Manager, Docker-сети и три реальных проекта на практике.

Читать далее

Визуализация кастомных метрик Angie в Grafana

Время на прочтение6 мин
Охват и читатели6.9K

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

Читать далее

Тест современных компрессоров для HTTP

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели9.3K

Сжатие текста уже давно стало стандартом в мире веб‑приложений. Сокращение объёма данных даёт сокращение времени передачи и снижение нагрузки на сетевой канал. Однако, часто настройка компрессии сводится к динамическому сжатию gzip и настройкам по умолчанию. В этой статье разберём вопрос сжатия более глубоко. Для начала вспомним основные технологии сжатия, доступные в вебе.

Читать далее

Отказоустойчивый запуск WSGI приложения. Обзор архитектуры Gunicorn

Уровень сложностиСредний
Время на прочтение36 мин
Охват и читатели9.7K

Gunicorn кажется простым, пока не сталкиваешься с эксплуатацией: внезапные ошибки 502, зависшие воркеры и странное поведение при перезапусках. За этими симптомами стоят вполне конкретные причины — от медленных клиентов и отсутствия буферизации до особенностей реализации GThread и механики Graceful Shutdown.

В этой статье разберём реальные сценарии отказов, посмотрим, как менялась архитектура GThread в разных версиях Gunicorn, и соберём практичную конфигурацию с Nginx, Docker и Kubernetes, которая ведёт себя предсказуемо под нагрузкой.

Читать далее

Надежный фейс-контроль: как прикрутить MFA к веб-сервису через Nginx и OAuth2 Proxy

Время на прочтение14 мин
Охват и читатели13K

Подключить MFA к современному веб-приложению обычно несложно: достаточно подключить SAML или OIDC на стороне самого приложения и включить второй фактор на Identity Provider. Проблемы начинаются там, где сервис не умеет ни в SAML, ни в OIDC, а переписывать его рискованно, дорого или попросту некому.

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

В этой статье системный инженер Артур Газеев и я, Аскар Добряков, ведущий эксперт направления защиты данных и приложений в К2 Кибербезопасность разбираем, как вынести MFA на периметр для legacy-системы, которую нельзя быстро переписать. Покажем архитектуру решения, объясним, почему выбрали связку Nginx + OAuth2 Proxy + Indeed AM, и разберем, на каких настройках поднимали и отлаживали эту схему.

Читать далее

Инструменты для бенчмарка веб-сервера

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

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

Читать далее

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

Как я пришёл к идее создания системы приложений и разработал поисковик и мессенджер

Время на прочтение23 мин
Охват и читатели12K

Я Михаил — создатель и главный разработчик системы вэб приложений. Второй участник проекта — Владимир — разработчик мобильных версий и ответственный за SEO оптимизацию.

Читать далее

Простой гайд как на одном и том же сервере иметь и панель 3X-UI за NGINX, и свой сервис

Время на прочтение10 мин
Охват и читатели33K

В 2026 для VPN нужна маскировка. А нет никакой лучшей маскировки, чем уже работающий легитимный сервис. Силами NGINX-streams и HTTP2 это сделать довольно легко.

Читать далее

Работа с картинками в Angie

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели9.2K

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

Читать далее

Я устал каждый раз гуглить одно и то же в nginx — и сделал инструмент, который объясняет конфиги на русском

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели15K

Я устал каждый раз гуглить одно и то же в nginx — и сделал инструмент, который объясняет конфиги на русском

Очередной генератор nginx-конфигов? Нет. Ну, почти нет.

Читать далее

Как наказать цифрового воробья или как я проходил таск PigeonsRevenge от платформы ACLabs.pro

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

Данный таск был частью 5 сезона CTF, который проходил на площадке ACLabs. Машина необычная с увлекательным сюжетом и интересными уязвимостями.

Условие задачи:

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

Цепочка атаки

Атакующая цепочка «PigeonsRevenge» комбинирует одну реальную критическую CVE (Webmin 1.910 — CVE-2019-15107, 9.8 CRITICAL) с набором классических техник ATT&CK: активная разведка → port knocking → эксплуатация публичного приложения → Metasploit reverse-shell → туннелирование Ligolo-ng → инъекция через переменную окружения в кастомный бинарник → обход фильтра табуляцией → закрепление с root-привилегиями.

Читать далее

Три слоя защиты сервера: ipset, auto-block и CrowdSec

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

Ваши логи забиты попытками входа в .env, .git и wp-login.php? Пока бот стучится в Nginx, ваш сервер уже тратит драгоценные ресурсы. Я решил перенести фильтрацию в ядро Linux и делюсь рабочим кейсом эшелонированной обороны на базе ipset и CrowdSec.

Читать далее

Прокси MTProto | Обход ограничения на зарубежный трафик

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели25K

В предыдущей статье я рассказал о том с какими проблемами столкнулся при создании своего решения для управления прокси. Как я понял из комментариев, прокси довольно быстро отлетали не только из-за того что я что-то не так делал, но в том числе из-за проблем телеги. Но РКН не стоит на месте и появилась новая проблема - на горизонте показался лимит в 15Гб зарубежного трафика. Как я понял, по слухам в начале он будет распространяться на мобильный интернет, так что я сразу решил добавить в свою панель возможность создания цепочки подключений.

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