Обновить
32K+

Nginx *

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

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

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

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

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

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

Читать далее

Новости

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

Схема входящего траффика в кластер 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.4K

Как держать несколько проектов на одном 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 мин
Охват и читатели32K

В 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Гб зарубежного трафика. Как я понял, по слухам в начале он будет распространяться на мобильный интернет, так что я сразу решил добавить в свою панель возможность создания цепочки подключений.

Читать далее

Организация MTProto для телеграмма на одном порту

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

Я решил погрузиться в мир собственных VPN серверов, после того как очередной раз сервис, за который я платил деньги перестал качественно работать, а поддержка из-за перегруженности отвечала шаблонами, в духе "Надо подождать, мы скоро все починим".

Набрав в поиске "VDS в Германии аренда" я с удивлением обнаружил, что арендовать такой сервер можно с российской карты и за вполне вменяемые деньги. Арендовав сервер на неделю, я принялся поднимать собственный MTProto для телеги. Использовал я образ https://github.com/telemt/telemt

Я поднял свой контейнер с прокси, проверил, что все работает и обрадовался. Но сразу же встал следующий вопрос - CLI это хорошо, но хотелось бы какой-то GUI для управления прокси. Я перепробовал несколько панелей и остановился на https://github.com/MaksimTMB/mtg-adminpanel. её суть в том, что панель можно установить на любой сервер или вообще локально, а на сервер, где будет развернут прокси ставится агент, который будет выполнять команды панели. Такое решение мне понравилось, так как в будущем можно будет расширить сеть до нескольких узлов, во избежание тотальной блокировки.

Читать далее

Как я настроил OpenClaw для зоопарка landings для своей компании

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

WP умер, перевёл все сайты на OpenClaw

Раньше часто использовал WordPress с кучей плагинов для создания сайтов и лендингов. Сейчас поставил DarwinClaw на чистую машину Ubuntu и сказал ему сделать всю инфраструктуру для сайтов. Он поставил nginx + node.js.

Потом попросил перенести сайты, указав ссылки на них. Он создал все сайты.

Попросил добавить git и репозиторий для хранения этих сайтов. То есть всегда можно быстро откатить изменения.

Теперь полностью управляю этим зоопарком лендингов через TG команды типа:

Убери с сайта X вот это

Добавь на сайт Y вот то

Поменяй стиль сайта Z на …

Откати последние изменения на сайте XM

Замени икноку на сайте XS на более современную

Собери статистику по заполнению форм с сайтов X, Y, Z в формате

Раньше это либо делали люди за деньги, либо WP с его тяжёлой инфраструктурой, теперь всё делает бот на OpenClaw.

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