Как стать автором
Обновить
3
Рейтинг

Nginx *

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

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

Как мы создали Pingora, прокси-сервер, связывающий Cloudflare с Интернетом

Системное администрирование *Программирование *Nginx *Тестирование веб-сервисов *
Из песочницы
Перевод

Сегодня мы хотим рассказать о Pingora, новом HTTP-прокси, который мы создали своими силами с использованием Rust и который обслуживает более 1 триллиона запросов в день, повышает нашу производительность и предоставляет множество новых возможностей для клиентов Cloudflare, требуя при этом лишь треть ресурсов процессора и памяти от объема ресурсов нашей предыдущей инфраструктуры прокси.

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

Читаем дальше!
Всего голосов 22: ↑13 и ↓9 +4
Просмотры 5.8K
Комментарии 14

Новости

Развертываем облачное хранилище NextCloud AIO на Windows в Docker для дома

Системное администрирование *Nginx *Apache *Хранилища данных *Облачные сервисы *
Tutorial

Пробуем поставить Opensource облачное хранилище NextCloud для повседневного пользования на домашний компьютер с ОС Windows. Подробный гайд.

В этой статье:
Анализ целесообразности развертывания облака дома. Поэтапная настройка. Проблемы и технические решения. Плюсы и минусы NextCloud. Запуск NextCloud в Docker. Подробный разбор параметров контейнера NextCloud AIO. VPN-тоннель домой с использованием сервиса Hamachi. Обход проблемы отсутствия белого ip. Настройка reverse-proxy на базе Nginx, Apache или Caddy. Запуск HTTPS-сервера на домашнем компьютере. Получение SSL-сертификата с помощью сервиса letsencrypt. Краткий разбор форматов SSL-сертификатов. Настройка файервола в Windows.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 3.2K
Комментарии 7

Развертывание Spring Boot приложения с помощью Nginx, Let's Encrypt и Docker Compose

Разработка веб-сайтов *Java *Nginx *Серверное администрирование *DevOps *
Из песочницы

Привет, Хабр! В своей первой статье я бы хотел поделиться опытом в развертывании Spring Boot приложения. Но для начала небольшое отступление, которое должно ответить на вопросы зачем и почему.

Недавно я столкнулся с задачей разработать Telegram бота. Казалось бы, что тут сложного? Ну раз надо, то разрабатывай, где тут могут быть сложности? Но вот беда, ранее я не сталкивался с задачей развертывания проекта, тем более было много вопросов касаемо получения SSL сертификата так как Telegram API работает только с HTTPS протоколом. Увы после долгих поисков я так и не нашел статьи, которая ответила бы на все вопросы, поэтому процесс деплоя затянулся из-за того, что пришлось собирать весь материал по кусочкам. Теперь, когда у меня получилось разобраться с этой проблемой, я бы хотел вам рассказать как это сделать, чтобы сэкономить вам время и бонусом 2000 рублей за SSL сертификат.

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

Как настроить Nginx в качестве балансировщика нагрузки

Блог компании FirstVDS Nginx *Серверная оптимизация *Серверное администрирование *
Перевод

Что такое балансировка нагрузки?


Балансировка нагрузки подразумевает эффективное распределение входящего сетевого трафика между группой бэкенд-серверов. Задача же регулятора — распределить нагрузку между несколькими установленными бэкенд-серверами.

Существует несколько типов балансировщиков нагрузки:

  • Балансировщик нагрузки приложений.
  • Сетевой балансировщик нагрузки.
  • Балансировщик нагрузки шлюза.
  • Классический балансировщик нагрузки.
Читать дальше →
Всего голосов 25: ↑21 и ↓4 +17
Просмотры 6.9K
Комментарии 21

Босяцкий кластер высокой доступности

Высокая производительность *Системное администрирование *Nginx *Сетевые технологии *
Перевод
Tutorial

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

Читать далее
Всего голосов 50: ↑45 и ↓5 +40
Просмотры 11K
Комментарии 41

Как я создавал собственный сервер трансляции видео на базе домашнего ПК

Работа с видео *Nginx *Серверное администрирование *Видеотехника Периферия

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

История примерно такая. В нашем городе имеется своё местное телевидение. Оно транслируется в сети кабельного телевидения в аналоговом и цифровом (DVB-C) виде. Точнее, оно транслируется в определённое время по полчаса в день на телеканале-партнёре (в нашем случае – телеканал «Продвижение»). Кабельное телевидение доступно не каждому жителю. В основном оно протянуто в многоквартирных домах, каковым мой дом не является. А до сентября прошлого года телеканал местного ТВ вещали в ДМВ диапазоне в аналоговом виде. Именно этот и только этот телеканал я и смотрел, пока не прекратили вещание. Также имеется канал местного телевидения на ютубе, но там информация публикуется только на следующий день после премьеры. И то, информация не полная, только видеосюжеты. Мне пришла такая идея: сделать каким-то образом передачу местного телеканала с кабельного телевидения к себе домой через Интернет. У многих моих хороших знакомых в квартире есть кабельное телевидение. На базе одного из них я и решил осуществить задуманное.

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

Обходим блокировки сайтов: или как я развёртывал прямой proxy на базе nginx

Nginx *
Из песочницы

Ты как специалист в области IT, после февральских событий скорее всего столкнулся с проблемой недоступности некоторых ресурсов и наверняка подумал о том, как это дело обойти. Но использовать "бесплатный" или сторонний сервис кажется небезопасным или не даёт нужную ширину канала. У тебя есть навыки работы с Linux и свой сервер где-нибудь за бугром. Почему бы собственно говоря не сделать свой прямой прокси?

Читать далее
Всего голосов 11: ↑8 и ↓3 +5
Просмотры 8.8K
Комментарии 37

Шифруем передаваемые на сайт данные с алгоритмом на основе хаотической системы Лоренца

Блог компании DataLine Информационная безопасность *Криптография *Nginx *Научно-популярное

Привет! Меня зовут Михаил, работаю в компании DataLine сетевым инженером. По специальности я радиофизик, но со школьной скамьи интересуюсь криптографией.

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

За основу взял систему дифференциальных уравнений Лоренца и написал новый алгоритм шифрования на njs – на практике это можно применить, например, для шифрования данных на веб-сервере. В посте расскажу, почему Лоренц, почему njs, какие есть варианты реализации и ограничения у выбранного решения.

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Просмотры 1.9K
Комментарии 7

Развертывание GitLab CE в контейнерах Docker за обратным прокси

Блог компании Timeweb Cloud Настройка Linux *Системное администрирование *Nginx *
Tutorial


В этом руководстве мы рассмотрим, как быстро поднять свой GitLab сервер на контейнерах Docker, находящийся за обратным прокси сервером NGINX. Предполагается, что у вас уже установлен движок контейнеризации приложений Docker и Compose, а также обратный прокси сервер NGINX.
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 4.2K
Комментарии 11

Веб-приложение для видеотрансляций на Laravel

Nginx *Laravel *
Из песочницы

Привет, Хабр. В этой статье я хочу поделиться своим опытом создания приложения на фреймворке Laravel по трансляции видеоконтента. Итак начнём.

Проект опубликован как свободное ПО

Читать далее
Всего голосов 13: ↑11 и ↓2 +9
Просмотры 2.7K
Комментарии 4

Как я разогнал fail2ban* в тысячу раз с помощью SIMD

Высокая производительность *Ненормальное программирование *Nginx *Rust *

Fail2ban — утилита чрезвычайно полезная во многих случаях. Думаю, многие используют её для того, чтобы в автоматическом режиме блокировать особенно назойливых «посетителей». К сожалению, если входящий поток становится слишком большим, fail2ban теряет все свои полезные свойства, потому что разбор лога безнадёжно отстаёт от реальности.

Лог nginx из 100 тысяч строчек fail2ban при самых простых настройках разбирает порядка 45 секунд. Нехитрыми манипуляциями его можно ускорить раз в 6, но этого оказалось недостаточно. Наивная реализация на аналогичного фильтра на Rust уже обеспечила требуемую производительность, но если уж взялся за оптимизацию, то остановиться трудно.

* только необходимую часть функционала

Читать далее
Всего голосов 121: ↑119 и ↓2 +117
Просмотры 18K
Комментарии 76

Как защититься от dos/ddos, или Как я начал вновь высыпаться по ночам

Блог компании Nixys Системное администрирование *IT-инфраструктура *Nginx *

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

Читать далее
Всего голосов 17: ↑16 и ↓1 +15
Просмотры 9.5K
Комментарии 33

Как избежать 10 частых ошибок в настройке NGINX

Блог компании Nixys Nginx *Серверное администрирование *DevOps *
Перевод


Помогая пользователям NGINX с разрешением проблемных ситуаций, мы поняли, что большинство из них часто совершает одни и те же ошибки конфигурации. Более того, подобные ситуации вполне могут возникнуть даже у самих инженеров NGINX! В этой статье рассмотрим 10 наиболее распространенных ошибок и объясним как их исправить.


  1. Недостаточное количество файловых дескрипторов;
  2. Директива error_log off;
  3. Отсутствие keepalive-соединения с вышестоящими серверами;
  4. Упущение механизмов наследования директив;
  5. Директива proxy_buffering;
  6. Неправильное использование директивы if;
  7. Чрезмерные проверки работоспособности;
  8. Незащищенный доступ к метрикам;
  9. Использование ip_hash, когда весь трафик поступает из одного и того же блока /24 CIDR;
  10. Игнорирование преимуществ вышестоящих групп.
Читать дальше →
Всего голосов 70: ↑70 и ↓0 +70
Просмотры 26K
Комментарии 3

Кэш HTML на стороне NGINX с помощью Redis

PHP *Nginx *Laravel *
Tutorial

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

Основная проблема - связать кэш с логикой, чтоб кэш сбрасывать только при изменениях. Если внутри Laravel или другого фреймворка мы имеем доступ к бизнес логике зависимых сущностей, то на стороне nginx у нас только параметры запроса.

Читать далее
Всего голосов 5: ↑2 и ↓3 -1
Просмотры 2.1K
Комментарии 17

Tile server на коленке: навигация по старинным картам

Python *Django *Nginx *OpenStreetMap *ReactJS *

Я являюсь full stack разработчиком на культурно-историческом IT портале Königsland, который успешно начал свою работу примерно месяц назад. Этот ресурс посвящается культуре и истории Восточной Пруссии и является своеобразной летописью времен, которая больше всего напоминает вирутальный музей, где можно получить довольно полную информацию об истории этого великого края, а эта информация пополняется по мере возникновения у меня свободного времени.

Страницы этой летописи приоткрывают завесу тайны и позволяют получить пользу от современных технологий тем, кто увлекается стариной.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 4.6K
Комментарии 14

Рецепты Nginx: локализация страниц об ошибках

Nginx *
Tutorial

Для приготовления локализации страниц об ошибках нам понадобится сам nginx и его плагины error_page_inherit и include_server. Конечно, такую локализацию можно сделать и без этих плагинов, но у неё будет несколько недостатков. Во-первых, если в каком-то локейшене задаётся своя страница об ошибке, то все страницы об ошибках из предыдущих уровней не наследуются для этого уровня. Эту проблему решает первый плагин, позволяя наследовать страницы сообщений об ошибках. А, во-вторых, для каждого сервера придётся вручную включать локейшен обработки страницы об ошибке. И эту проблему как раз решает второй плагин, позволяя наследовать подключение файлов из главной конфигурации во все сервера.

Итак
Всего голосов 11: ↑11 и ↓0 +11
Просмотры 3.6K
Комментарии 3

Прикручиваем авторизацию на основе KeyCloak к веб-приложению

Блог компании АльфаСтрахование JavaScript *Java *Nginx *ReactJS *
Из песочницы

Жизненный цикл разработки корпоративного приложения в нашей компании привел меня к, по сути, банальной задаче - “прикручиванию” пользовательской авторизации к фронту приложения. Пользователями приложения должны быть сотрудники компании, а идентификационным провайдером должен стать корпоративный Active Directory (далее AD).

Было принято решение не работать с AD напрямую при авторизации сотрудников в корпоративных приложениях, а использовать для этого довольно удобный брокер авторизации – KeyCloak.

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

Кросс-компиляция NGINX (для случая GCC)

Open source *Nginx **nix *Разработка под Linux *

NGINX — это HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP/UDP прокси-сервер общего назначения, изначально написанный Игорем Сысоевым. Уже длительное время он обслуживает серверы многих высоконагруженных сайтов.


Однако кросс-компиляция NGINX практически невозможна, поскольку разработанные Игорем Сысоевым скрипты конфигурирования исходного кода в большинстве случаев используют так называемую процедуру «Try Run».


Те кто знаком с утилитами Autoconf, Automake знают, что проверки необходимых параметров системы и кросс-компилятора осуществляются различными процедурами, которые, в свою очередь, могут применять попытки сборки исходного кода (Try compile), линковки объектных файлов (Try link) и, наконец, попытки запуска тестовых программ (Try Run).


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


В Autotools проблемы, связанные с невозможностью запуска целевых программ на сборочной машине в некоторых случаях решаютcя кешированием переменных, которые могу быть переопределены пользователем в файле --cache-file или заданы в командной строке вызова скрипта ./configure.


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


Читать дальше →
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 2.8K
Комментарии 4

cors-anywhere на чистом конфиге nginx

Nginx *API *
✏️ Технотекст 2021

Если вы сталкивались с CORS, то знаете всю ту боль, которую испытывает разработчик, когда нужно сходить к API на другом домене. Если конфигурация сервера не доступна для настройки, то использовали какое-нибудь решение на основе не менее популярного решения cors-anywhere.

Не одним CORS едины
Всего голосов 11: ↑10 и ↓1 +9
Просмотры 8.2K
Комментарии 12

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

Nginx *
Tutorial

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

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

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