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

Nginx *

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

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

Рецепты Nginx: авторизация через auth0

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

Для приготовления авторизации через auth0 нам понадобится сам nginx и его плагины encrypted-session, headers-more, auth_request, set-misc, echo, json, evaluate и jwt. Можно также воспользоваться готовым образом.

Для начала
Всего голосов 5: ↑5 и ↓0+5
Комментарии3

Флаг EPOLLEXCLUSIVE и проблема неравномерного распределения соединений в Nginx на Linux

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

Совсем недавно, 25 января 2022 года вышел новый релиз Nginx - 1.21.6, в котором исправлена проблема неравномерного распределения входящих соединений между несколькими worker процессами в дефолтной конфигурации на Linux системах. Если конкретнее - use epoll, accept_mutex off, reuseport выключен.

В данной конфигурации при определенном характере нагрузки большинство входящих в Nginx соединений обрабатывается лишь одним worker процессом. 

Насколько я понимаю, эта проблема существует уже более пяти лет и берет начало в версии 1.11.3 (Jul 2016), когда в Nginx по умолчанию отключили accept_mutex, а вместо него стали полагаться на флаг EPOLLEXCLUSIVE, появившийся в ядре Linux 4.5.

Стоит заметить, что проблема балансировки входящих соединений при использовании механизма epoll и флага EPOLLEXCLUSIVE более глобальна и касается не только Nginx, а любых сетевых приложений, работающих по аналогичной схеме.

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

Читать далее
Всего голосов 31: ↑29 и ↓2+27
Комментарии24

Базовые принципы Availability

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

О чем статья

В этой статье речь пойдет о БАЗОВЫХ подходах и принципах к такому quality attribute (QA) как Availability. Никаких сложных случаев, ничего слишком сложного, только теория с двумя примерами, скипайте, если искали что-то эдакое.

Вся информация основана на парах книг, статей, и моем опыте. В конце статьи я покажу, какие именно. Также, эта статья - по суть перевод моей же статьи, только написанной на английском.

Что такое Availability?

Перед тем, как рассматривать паттерны и техники для обеспечения availability мы должны определить сам термин.

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии0

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

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

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

Цель статьи - поделиться практиками, которые я применил для защиты данных при поднятии собственного VPS в публичной сети. Всегда, когда твой IP открыт всему Миру напоказ и доступен извне внутренних контуров сети - это означает, что любой прохожий может устроить тебе неприятности: похитить твои данные, завладеть твоим сервером и сломать твое замечательное приложение. Я буду приводить пример атаки, показывать, как ее можно заметить и после этого будем разбирать возможные способы защиты.

Защитить данные!
Всего голосов 22: ↑22 и ↓0+22
Комментарии32

Истории

Разработка веб приложений на C/С++

Время на прочтение6 мин
Количество просмотров12K
В этой статье я бы хотел рассказать про создание веб приложений на С/С++ с использованием стека Nginx+fastcgi. Если быть более точным, то статья больше относится к сайтам, то есть к отдаче контента. Есть достаточно старая, но хорошая статья habr.com/ru/post/154187 Хотя тех пор прошло много времени, вышли новые стандарты С++. Я хочу в этой статье описать некоторое логическое продолжение, так как думаю, что тема будет многим интересна.
Читать дальше →
Всего голосов 16: ↑9 и ↓7+2
Комментарии21

Настройка LEMP сервера для простых проектов. Инструкция для самых маленьких. Часть третья

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

Приветствую читателей! В рамках текущей серии статей я рассказываю о том, как настроить сервер для простых проектов. Имеется ввиду сервер для работы нескольих сайтов, с небольшой нагрузкой под наиболее популярной CMS такой например как Bitrix. Основная цель статьи указать на ошибки допускаемых младшими специалистами при выполнении подобной настройки. Также указать на какие то вещи, которые сделают troubleshooting простым и удобным.

Это не совсем стэк LEMP, так как здесь используется Apache2, но вы можете использовать PHP-FPM вместо этого, если разработчик не против внедрения такого решения.

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

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

Предыдущие части статей доступны по следующим ссылкам:

Читать далее
Всего голосов 18: ↑14 и ↓4+10
Комментарии20

Настройка LEMP сервера для простых проектов. Инструкция для самых маленьких. Часть вторая

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

Данная статья является продолжением предыдущей статьи https://habr.com/ru/company/nixys/blog/645451/. Статья является обучающим материалом для начинающих администраторов, а также для разработчиков, которые хотели бы познакомиться с миром администрирования проектов. Если вы являетесь опытным администратором, можете смело пропускать данный материал.

Целью серии статей является описание подготовки работы сервера со стеком LEMP (Linux, Nginx, MySQL, PHP), отмечу, что в качестве PHP интерпретатора здесь используется Apache2, а не PHP-FPM, так как показывает практика многим разработчикам по прежнему необходим файл.htaccess, работу с которыми PHP-FPM из коробки не поддерживает.

Со своей стороны мы переносим правила из файла .htaccess в Nginx при необходимости установки PHP-FPM, однако это также занимает определенное время, зачастую разработчикам проще и быстрее внести нужные правила для текущих площадок именно в .htaccess файл. Также статьи описывают развертывание стэка и поднятие на нем работающих площадок. Инструкция подойдет для небольших Bitrix проектов, а тажке для проектов развернутых под любой популярной CMS.

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

Целью статей не является показать как развернуть идеальное окружение, а лишь указать на нюансы в работе и защитить начинающих специалистов от базовых ошибок при настройке.

Читать далее
Всего голосов 28: ↑16 и ↓12+4
Комментарии17

Ленивый деплой Django проекта UWSGI + NGINX (UBUNTU 20.04)

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

Здравствуйте!

Хочу представить вам пошаговую инструкцию по деплою django проекта.

Сразу скажу, что используя мою краткую инструкцию вы не поймете механику развертывания. По сути, это просто список команд для деплоя. Тут не будет никаких подробностей касательно работы UWSGI, NGINX и самого Django. Я просто помогу быстро добраться до цели, а цель у нас одна - задеплоить уже наконец этот **** проект!

Читать далее
Всего голосов 21: ↑8 и ↓13-5
Комментарии15

Настройка LEMP сервера для простых проектов. Инструкция для самых маленьких. Часть первая

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

Ведение

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

Целью серии статей является описание подготовки работы сервера со стоком LEMP (Linux, Nginx, MySQL, PHP, Apache), развертывание стэка и поднятие на нем работающих площадок. Инструкция подойдет для небольших Bitrix проектов, а тажке для проектов развернутых под любой популярной CMS.

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

Большая часть проектов базируется на ОС Ubuntu, Debian в статьях будут отражены настройки для этих систем. 

В данной статье будут описаны такие вещи как:

Читать далее
Всего голосов 24: ↑18 и ↓6+12
Комментарии19

Поднимаем Graylog сервер на AlmaLinux 8.5

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

Всем привет! Данное руководство поможет вам установить централизованное логирование событий на основе Graylog версии 4.2.1 (на момент написания статьи). Использовать мы будем операционную систему AlmaLinux 8.5 (альтернатива CentOS 8 от Red Hat). В процессе установки Graylog, мы рассмотрим первоначальную настройку сервера, настройку правил файрвола, а также использование NGINX в качестве обратного прокси серверу Graylog’а.

Вводные данные:

1. Свежеустановленный сервер на базе AlmaLinux release 8.5 (Arctic Sphynx);

2. 8 CPUs, 15 GB RAM и раздел подкачки размером 4 GB;

3. Graylog будет доступен по адресу https://logs.example.com

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

Напишем небольшой скрипт для этого:

Читать далее
Всего голосов 10: ↑6 и ↓4+2
Комментарии7

Актуальный сборник шаблонов для создания проектов и приложений на Django

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

Репозиторий: https://github.com/denisxab/django-start-pack

Какая существует проблемы: Слишком много времени уходит на первоначальную настройку Django проекта. Существует много технологий которые уже стали неотъемлемыми зависимостями для Django проектов. Например:

Читать далее
Всего голосов 8: ↑1 и ↓7-6
Комментарии12

Авторизация для бедных или как сделать RBAC для REST API с помощью OPA

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

Когда речь заходит про права доступа в приложении, то из этой ситуации появляется два результата:

Либо в коде приложения появляются привязки к неким ролям/scope’ам;

Либо разработчик обрастает бородой и начинает сыпать фразами вроде abaс, xacml и матрица доступа; 

Если вам интересно как можно из подручных средств собрать RBAC на любой сервис соблюдающий REST, то добро пожаловать.

Читать далее
Всего голосов 10: ↑9 и ↓1+8
Комментарии8

Nginx + Node.js: делаем идентификацию и аутентификацию

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

Авторизация в системах одна из ключевых частей. Можно использовать какие то мощные решения, Firebase например, или что то из множества хороших библиотек. Если хочется уменьшить количество зависимостей или для самообразования - то можно написать свое.

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

Читать далее
Всего голосов 8: ↑6 и ↓2+4
Комментарии14

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

Настраиваем GitLab Container Registry

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

В этой статье мы рассмотрим, как настроить реестр образов GitLab Container Registry, находящийся за обратным прокси сервером NGINX. Предполагается, что у вас уже установлен GitLab с помощью пакета Omnibus. Согласно документации, Container Registry можно настроить на том же домене, на котором работает сам GitLab, но в случае работы GitLab за прокси сервером, необходимо завести отдельный домен для реестра образов, чтобы избежать конфликта доменных имен при настройке виртуальных хостов в GitLab Nginx.

Реестр образов будет доступен по адресу: registry.example.com. Добавляем А запись для домена реестра в DNS. Приводим конфиг виртуального хоста на сервере обратного прокси к следующему виду:

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии3

HAProxy, Nginx и Docker: как это сделано в Roxy-WI

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

Продолжаем цикл статей о возможностях Roxy-WI. Сегодня мы поговорим ещё об одном важном наборе функций, связанных с управлением сервисами (а именно ― HAproxy и Nginx) в docker-контейнерах. Мы старались сделать эту функцию максимально простой и удобной в использовании. О том, что у нас получилось, и пойдёт речь ниже.

Читать далее
Всего голосов 10: ↑8 и ↓2+6
Комментарии4

Рецепты nginx: виджет Государственного Адресного Реестра

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

Для приготовления виджета Государственного Адресного Реестра, кроме базы, нам также понадобится nginx и его плагины postgres и json. Можно воспользоваться готовым образом.

В базе была определена большая функция gar_select от json и возвращающая json. Вот как раз она и нужна для использования через nginx.

Итак
Всего голосов 11: ↑8 и ↓3+5
Комментарии2

Тёмный маршрутизатор из Raspberry Pi

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

В данной статье я расскажу о том, как я сделал из Raspberry Pi маршрутизатор, способный перенаправлять отдельные сайты, отдельные подсети, да хоть все запросы через tor.

Читать далее
Всего голосов 23: ↑22 и ↓1+21
Комментарии28

Разворачиваем сайт на CMS DLE в контейнерах Docker и Compose

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

В данном туториале мы рассмотрим, как быстро развернуть LEMP-стэк на виртуальный сервер VPS, используя технологию контейнеризации на базе Docker для сайта под управлением CMS DataLife Engine (DLE).

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии13

What does the Checker check, или как организовать удобный мониторинг через веб-интерфейс =)

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

Продолжаем серию публикаций о нашем веб-интерфейс для HAProxy. Сегодня мы поговорим о специализированном сервис под названием Checker,

предназначенном для мониторинга сервисов HAProxy и Nginx, а также бэкендов HAProxy. Если один из сервисов падает, то Checker рассылает уведомления через Telegram или Slack.

Это очень удобно: не нужно "прикручивать" сторонний инструмент мониторинга, да и умеет Checker (причём из коробки) гораздо больше. Впрочем, обо всём по порядку.

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

Песочница для Nginx

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

Как-то я болтала с приятелем о том, как было бы здорово, если бы был такой сайт-песочница, где бы можно было просто скопировать-вставить конфиг Nginx-а и протестировать его. И я поняла, что это не так уж сложно сделать, поэтому погрузилась в тему и сделала: nginx-playground.wizardzines.com.


screenshot

Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии21

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