Протокол НТТРv3, или как ещё называют эту версию QUIC, появился довольно давно. Практические реализации появились ещё в 2020-м году. Я всё как-то мимо него проходил, не погружался и не настраивал. На прошлой неделе вышло видео:
▶️ Ускоряем HTTP/3: DNS-записи HTTPS
В настройке HTTPv3 ничего сложного нет, так что решил разобраться, попробовать и дальше уже включать по умолчанию. Никаких технических преград сейчас к этому нет.
Для работы HTTP версии 3 нужно выполнить несколько шагов.
1️⃣ В настройке веб сервера включить его поддержку. В Nginx/Angie это делается следующим образом. Добавляем уже к существующим параметрам виртуального хоста с HTTPS следующие настройки:
Обращаю внимание на важный момент. В пакетах Angie из репозиториев разработчиков модуль http_v3_module включён по умолчанию. Не проверял его наличие в пакетах с Nginx. DeepSeek посоветовал вручную собрать Nginx с параметром
И второй момент. Я изначально add_header добавил не в корневой location, а в параметры сервера, где добавляются другие заголовки. HTTPv3 не заработал. Долго выяснял, в чём дело. Думал, это формальность. Я обычно всегда заголовки ко всему серверу применяю, а не location. Но тут, судя по всему, это имеет принципиальное значение.
2️⃣ Открываем на файрволе порт 443 UDP, так как QUIC работает по UDP. Я сначала тоже забыл это сделать. У меня по умолчанию всё, что не надо, закрыто, поэтому ничего не заработало. Быстро сообразил, что надо открыть UDP порт.
Этих настроек уже достаточно, чтобы HTTPv3 заработал, но не с первого запроса. По умолчанию браузер обращается по v2 и только после того, как придёт настроенный заголовок, переходит на v3. А первые несколько запросов улетают по v2.
Чтобы это исправить, придумана новая DNS запись типа HTTPS. Браузер, при обращении к сайту, ищет A запись и параллельно запрашивает HTTPS. Если она есть и там указано, что сайт поддерживает работу HTTPv3, он сразу обращается по v3.
Не все DNS хостинги поддерживают этот тип записи. Например, DNS от Яндекса не позволяет создать эту запись. Я в итоге от него отказался. Бесплатный DNS хостинг есть у Selectel. Причём недавно они выпустили новую версию этого хостинга и всем предлагают туда перейти. Мне как-то лень переносить было, и так всё работает. Но старая версия DNS хостинга не поддерживает эти записи. Пришлось перейти на новую. Там без проблем создал HTTPS запись. Выглядит она примерно так:
1 - приоритет
. - основное доменное имя, аналог serveradmin.ru
alpn="h3,h2" - указание на поддержку версии HTTPv3 и HTTPv2
3️⃣ Таким образом, третий пункт – добавление DNS записи типа HTTPS.
После этого сайт с первого запроса стал работать по протоколу третьей версии.
В настройке нет никаких проблем, можно прямо сейчас использовать новую версию протокола. К тому же это максимально безопасно, так как современные браузеры всегда делают попытку открыть сайт и по v2. Если вы где-то ошибётесь в настройке, то v3 просто не заработает. Я в этом убедился на практике. Когда что-то было не так, сайт работал как и прежде. И только после того, как всё сделал правильно, заработал HTTPv3.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#webserver #angie
▶️ Ускоряем HTTP/3: DNS-записи HTTPS
В настройке HTTPv3 ничего сложного нет, так что решил разобраться, попробовать и дальше уже включать по умолчанию. Никаких технических преград сейчас к этому нет.
Для работы HTTP версии 3 нужно выполнить несколько шагов.
1️⃣ В настройке веб сервера включить его поддержку. В Nginx/Angie это делается следующим образом. Добавляем уже к существующим параметрам виртуального хоста с HTTPS следующие настройки:
listen 443 quic reuseport;http3 on;location / { add_header Alt-Svc 'h3=":443"; ma=86400';}Обращаю внимание на важный момент. В пакетах Angie из репозиториев разработчиков модуль http_v3_module включён по умолчанию. Не проверял его наличие в пакетах с Nginx. DeepSeek посоветовал вручную собрать Nginx с параметром
--with-http_v3_module. И второй момент. Я изначально add_header добавил не в корневой location, а в параметры сервера, где добавляются другие заголовки. HTTPv3 не заработал. Долго выяснял, в чём дело. Думал, это формальность. Я обычно всегда заголовки ко всему серверу применяю, а не location. Но тут, судя по всему, это имеет принципиальное значение.
2️⃣ Открываем на файрволе порт 443 UDP, так как QUIC работает по UDP. Я сначала тоже забыл это сделать. У меня по умолчанию всё, что не надо, закрыто, поэтому ничего не заработало. Быстро сообразил, что надо открыть UDP порт.
Этих настроек уже достаточно, чтобы HTTPv3 заработал, но не с первого запроса. По умолчанию браузер обращается по v2 и только после того, как придёт настроенный заголовок, переходит на v3. А первые несколько запросов улетают по v2.
Чтобы это исправить, придумана новая DNS запись типа HTTPS. Браузер, при обращении к сайту, ищет A запись и параллельно запрашивает HTTPS. Если она есть и там указано, что сайт поддерживает работу HTTPv3, он сразу обращается по v3.
Не все DNS хостинги поддерживают этот тип записи. Например, DNS от Яндекса не позволяет создать эту запись. Я в итоге от него отказался. Бесплатный DNS хостинг есть у Selectel. Причём недавно они выпустили новую версию этого хостинга и всем предлагают туда перейти. Мне как-то лень переносить было, и так всё работает. Но старая версия DNS хостинга не поддерживает эти записи. Пришлось перейти на новую. Там без проблем создал HTTPS запись. Выглядит она примерно так:
# dig serveradmin.ru HTTPSserveradmin.ru. 3600 IN HTTPS 1 . alpn="h3,h2"1 - приоритет
. - основное доменное имя, аналог serveradmin.ru
alpn="h3,h2" - указание на поддержку версии HTTPv3 и HTTPv2
3️⃣ Таким образом, третий пункт – добавление DNS записи типа HTTPS.
После этого сайт с первого запроса стал работать по протоколу третьей версии.
В настройке нет никаких проблем, можно прямо сейчас использовать новую версию протокола. К тому же это максимально безопасно, так как современные браузеры всегда делают попытку открыть сайт и по v2. Если вы где-то ошибётесь в настройке, то v3 просто не заработает. Я в этом убедился на практике. Когда что-то было не так, сайт работал как и прежде. И только после того, как всё сделал правильно, заработал HTTPv3.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#webserver #angie
3👍175👎3
С момента первого моего упоминания сервиса axiom.co, продолжаю его использовать. Вновь пишу о нём, чтобы рассказать тем, кто не видел эту информацию. Очень простой в настройке и удобный в использовании для хранения и анализа логов веб сервера. Я пользуюсь полностью бесплатным тарифом, который не требует никаких подтверждений и персональных данных. Аутентификация через учётку на github. При этом позволяет хранить 500GB логов в месяц. Мне этого за глаза.
Про настройку и использование я уже писал ранее. По настройке с тех пор ничего не поменялось. Для отправки используется Vector (иногда падает, надо мониторить и переподнимать), у него встроенная интеграция с axiom.
Axiom условно можно назвать аналогом ELK, только сильно урезанным в плане функциональности. Из-за этого его особо не надо изучать. Отправляешь туда логи, заходишь и мышкой создаёшь нужные дашборды, запросы, отчёты. С ELK так не получится. В новых версиях даже заходить не хочется в виджеты и дашборды. Каждый раз, как первый раз, приходится вспоминать, как тут что-то сделать и построить нужную визуализацию.
Например, я позавчера включил на сайте протокол HTTPv3. Решил сходить посмотреть, сколько запросов по этому протоколу выполняется. Сбор логов настроен по указанной выше ссылке. В веб интерфейсе axiom иду в раздел Query и мышкой в конструкторе строю запрос: Dataset = serveradmin.ru, Where != http_version, Summarize count(), group by http_version.
И получил график растущего использования HTTPv3. Протокол используется.
Или вот ещё пример. Посмотрим, по каким url на запросы выходят 404 коды ответов. Dataset = serveradmin.ru, Where status =~ "404", Summarize count(), group by url.
Думаю, идея понятна. В сервисе ничего такого особенного нет, чего нельзя было бы сделать где-то в другом месте. То же самое можно сделать в ELK, Graylog, Loki, Goaccess. Но тут всё бесплатно, ничего настраивать не надо. Просто оправляем логи и пользуемся. Разумеется, если у вас там ничего секретного нет. А то уже предвижу комментарии на тему того, что я свои секретные логи веб сервера никому показывать не могу. Если не можете, то не используйте облачные сервисы. Тут всё очевидно. Наверняка они эти данные как-то используют, иначе откуда такая щедрость.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#logs #webserver
Про настройку и использование я уже писал ранее. По настройке с тех пор ничего не поменялось. Для отправки используется Vector (иногда падает, надо мониторить и переподнимать), у него встроенная интеграция с axiom.
Axiom условно можно назвать аналогом ELK, только сильно урезанным в плане функциональности. Из-за этого его особо не надо изучать. Отправляешь туда логи, заходишь и мышкой создаёшь нужные дашборды, запросы, отчёты. С ELK так не получится. В новых версиях даже заходить не хочется в виджеты и дашборды. Каждый раз, как первый раз, приходится вспоминать, как тут что-то сделать и построить нужную визуализацию.
Например, я позавчера включил на сайте протокол HTTPv3. Решил сходить посмотреть, сколько запросов по этому протоколу выполняется. Сбор логов настроен по указанной выше ссылке. В веб интерфейсе axiom иду в раздел Query и мышкой в конструкторе строю запрос: Dataset = serveradmin.ru, Where != http_version, Summarize count(), group by http_version.
['serveradmin.ru']| where isnotempty(http_version)| summarize count() by bin_auto(_time), http_versionИ получил график растущего использования HTTPv3. Протокол используется.
Или вот ещё пример. Посмотрим, по каким url на запросы выходят 404 коды ответов. Dataset = serveradmin.ru, Where status =~ "404", Summarize count(), group by url.
['serveradmin.ru']| where status =~ "404"| summarize count() by bin_auto(_time), urlДумаю, идея понятна. В сервисе ничего такого особенного нет, чего нельзя было бы сделать где-то в другом месте. То же самое можно сделать в ELK, Graylog, Loki, Goaccess. Но тут всё бесплатно, ничего настраивать не надо. Просто оправляем логи и пользуемся. Разумеется, если у вас там ничего секретного нет. А то уже предвижу комментарии на тему того, что я свои секретные логи веб сервера никому показывать не могу. Если не можете, то не используйте облачные сервисы. Тут всё очевидно. Наверняка они эти данные как-то используют, иначе откуда такая щедрость.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#logs #webserver
3👍82👎4
Основной вопрос, который возникает при включении прокола HTTPv3 для сайта: "А какая разница с прошлым протоколом? Зачем включать?". Я решил провести некоторые тесты на своём реальном сайте, включая и отключая h3. Для тестов взял хорошо известный мне инструмент WebPageTest и запустил у себя.
Как обычно, он не собрался без ошибок, пришлось поковыряться. Если кому-то интересен этот локальный сервис для теста производительности сайтов, дайте знать. Сделаю по нему свежую заметку, как собрать и запустить самую свежую версию сервера и агента. Его удобно использовать, так как можно запускать локально и исключать влияние сторонних факторов, которые обязательно будут в публичных сервисах.
Запустил я локальную версию WebPageTest на своём сервере и прогнал серию тестов с отключенным h3 и включенным. Для каждого прогона делал по 9 тестов с двумя запусками, когда второй использует кэш после первого запуска. И сравнил результаты, как между одинаковыми тестами в рамках h2 и h3, так и между ними. Различия между однотипными тестами были минимальны. И между h2 и h3 разница была стабильная.
Результаты получились неоднозначными. Поленился поднять локальную копию сайта. Тестировал на рабочем, который опубликован в интернет. Интересно увидеть практические результаты, а не лабораторные. В итоге разница получилась незначительная в пользу h2. Можно сказать в пределах погрешности, кроме одного значения - Time To first Byte и как его следствие - время начала отрисовки Time to Start Render. В режиме h3 она неизменно была выше, чем в h2. То есть дольше приходил ответ на первый запрос, и позже начиналась отрисовка. Параметр TTFB важный с точки зрения СЕО, так что даже не знаю, как реагировать на эти измерения. По идее надо отключать h3.
Внимательно смотрел на результаты и сравнивал. H3 даёт по всем параметрам результаты не хуже h2, а где-то даже лучше. DNS Lookup одинаковый, то есть проседания на DNS запросы нет, Total Connection Time у h3 неизменно ниже, загрузка всех элементов чуть быстрее, но Time to First Byte, за который по идее отвечает непосредственно сервер, всегда у h3 выше и из-за этого едут все остальные метрики, так как и отрисовка, и полная загрузка начинают отставать. Такое ощущение, что причина в реализации h3 в самом веб сервере. Надо тестировать с другими, но это довольно хлопотно, если разворачивать реальный сайт, а не синтетические странички.
Внизу показал результат сравнения, где получилась наиболее усреднённая картинка. Думаю, что разверну сайт отдельно локально и потестирую. Надо понять, в каком режиме всё же лучше оставлять сайты. В целом, с обоими версиями HTTP у меня результат получился хорошим, ниже рекомендованного порога, который считается хорошим результатом. Но всё равно, чем меньше, тем лучше. HTTPv3 пока отключил.
Было бы интересно узнать, если кто-то делал подобные тесты или видел где-то результаты. Нет возможности посвятить много времени этому вопросу, чтобы окончательно разобраться. Один сайт и веб сервер - не показатель. Надо массовые тесты делать.
#webserver #webpagetest
Как обычно, он не собрался без ошибок, пришлось поковыряться. Если кому-то интересен этот локальный сервис для теста производительности сайтов, дайте знать. Сделаю по нему свежую заметку, как собрать и запустить самую свежую версию сервера и агента. Его удобно использовать, так как можно запускать локально и исключать влияние сторонних факторов, которые обязательно будут в публичных сервисах.
Запустил я локальную версию WebPageTest на своём сервере и прогнал серию тестов с отключенным h3 и включенным. Для каждого прогона делал по 9 тестов с двумя запусками, когда второй использует кэш после первого запуска. И сравнил результаты, как между одинаковыми тестами в рамках h2 и h3, так и между ними. Различия между однотипными тестами были минимальны. И между h2 и h3 разница была стабильная.
Результаты получились неоднозначными. Поленился поднять локальную копию сайта. Тестировал на рабочем, который опубликован в интернет. Интересно увидеть практические результаты, а не лабораторные. В итоге разница получилась незначительная в пользу h2. Можно сказать в пределах погрешности, кроме одного значения - Time To first Byte и как его следствие - время начала отрисовки Time to Start Render. В режиме h3 она неизменно была выше, чем в h2. То есть дольше приходил ответ на первый запрос, и позже начиналась отрисовка. Параметр TTFB важный с точки зрения СЕО, так что даже не знаю, как реагировать на эти измерения. По идее надо отключать h3.
Внимательно смотрел на результаты и сравнивал. H3 даёт по всем параметрам результаты не хуже h2, а где-то даже лучше. DNS Lookup одинаковый, то есть проседания на DNS запросы нет, Total Connection Time у h3 неизменно ниже, загрузка всех элементов чуть быстрее, но Time to First Byte, за который по идее отвечает непосредственно сервер, всегда у h3 выше и из-за этого едут все остальные метрики, так как и отрисовка, и полная загрузка начинают отставать. Такое ощущение, что причина в реализации h3 в самом веб сервере. Надо тестировать с другими, но это довольно хлопотно, если разворачивать реальный сайт, а не синтетические странички.
Внизу показал результат сравнения, где получилась наиболее усреднённая картинка. Думаю, что разверну сайт отдельно локально и потестирую. Надо понять, в каком режиме всё же лучше оставлять сайты. В целом, с обоими версиями HTTP у меня результат получился хорошим, ниже рекомендованного порога, который считается хорошим результатом. Но всё равно, чем меньше, тем лучше. HTTPv3 пока отключил.
Было бы интересно узнать, если кто-то делал подобные тесты или видел где-то результаты. Нет возможности посвятить много времени этому вопросу, чтобы окончательно разобраться. Один сайт и веб сервер - не показатель. Надо массовые тесты делать.
#webserver #webpagetest
2👍78👎2
Для Nginx существует очень много всевозможных веб панелей для управления. Сегодня расскажу об ещё одной, которая отличается от большинства из них. Речь пойдёт об open source проекте Nginx UI. Сразу перейду к сути и отмечу то, что понравилось больше всего:
🟢 Nginx UI не меняет стандартную структуру каталогов и расположение конфигурационных файлов, которые приняты в системе. Я проверял в Debian, всё на своих местах в
🟢 Вся панель - это бинарник
Остальные возможности Nginx UI:
◽️Управление виртуальными хостами, в том числе для проксирования: добавление, удаление, редактирование конфигурации через браузер.
◽️Получение и использование сертификатов от Let's Encrypt.
◽️Дашборд с базовыми метриками мониторинга сервера.
◽️Просмотр логов.
◽️Доступ к консоли сервера.
◽️Есть на выбор наборы готовых настроек для типовых проектов под веб сервер, типа wordpress, drupal и т.д. Они просто добавляют некоторые правила в виртуальные хосты.
◽️Своё состояние хранит в локальной sqlite базе рядом с конфигурационным файлом.
В целом ничего особенного, но сделано легко и аккуратно. Приятный и удобный веб интерфейс. Я быстро развернул сервер, всё настроил, попробовал.
Установка простая:
Я посмотрел скрипт, там ничего особенного. Скачивается бинарник, формируется конфигурация, создаётся юнит systemd. Есть собранный контейнер Docker. Не смотрел его.
После установки можно идти по IP адресу сервера на порт 9000 и выполнять настройку. У панели есть русский язык, но есть непереведённые разделы. Проект живой, поддерживается и развивается.
Можно посмотреть demo: https://demo.nginxui.com, учётка - admin / admin.
Панель в целом понравилась. Осталось приятное впечатление. Пользоваться удобно. Возможности ограничены только управлением стандартными конфигурациями Nginx. Для кого-то это будет плюс, для кого-то, возможно, минус.
⇨ 🌐 Сайт / Исходники
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#nginx #webserver
🟢 Nginx UI не меняет стандартную структуру каталогов и расположение конфигурационных файлов, которые приняты в системе. Я проверял в Debian, всё на своих местах в
/etc/nginx. Формат конфигурационных файлов такой, что можно свободно туда заглянуть, поправить, забрать и использовать там, где nginx-ui нет вообще. Если удалить панель, то Nginx со всеми настройками будет работать без неё.🟢 Вся панель - это бинарник
/usr/local/bin/nginx-ui и конфигурационный файл к нему /usr/local/etc/nginx-ui/app.ini(чувствуется старая школа в выборе размещения файлов). Указал конечное расположение файлов, если использовать предложенный скрипт для установки. Он скачивает исполняемый файл, формирует конфигурацию и создаёт службу в systemd.Остальные возможности Nginx UI:
◽️Управление виртуальными хостами, в том числе для проксирования: добавление, удаление, редактирование конфигурации через браузер.
◽️Получение и использование сертификатов от Let's Encrypt.
◽️Дашборд с базовыми метриками мониторинга сервера.
◽️Просмотр логов.
◽️Доступ к консоли сервера.
◽️Есть на выбор наборы готовых настроек для типовых проектов под веб сервер, типа wordpress, drupal и т.д. Они просто добавляют некоторые правила в виртуальные хосты.
◽️Своё состояние хранит в локальной sqlite базе рядом с конфигурационным файлом.
В целом ничего особенного, но сделано легко и аккуратно. Приятный и удобный веб интерфейс. Я быстро развернул сервер, всё настроил, попробовал.
Установка простая:
# apt install nginx# bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ installЯ посмотрел скрипт, там ничего особенного. Скачивается бинарник, формируется конфигурация, создаётся юнит systemd. Есть собранный контейнер Docker. Не смотрел его.
После установки можно идти по IP адресу сервера на порт 9000 и выполнять настройку. У панели есть русский язык, но есть непереведённые разделы. Проект живой, поддерживается и развивается.
Можно посмотреть demo: https://demo.nginxui.com, учётка - admin / admin.
Панель в целом понравилась. Осталось приятное впечатление. Пользоваться удобно. Возможности ограничены только управлением стандартными конфигурациями Nginx. Для кого-то это будет плюс, для кого-то, возможно, минус.
⇨ 🌐 Сайт / Исходники
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#nginx #webserver
3👍196👎3
Если вам приходится обслуживать сайты, работающие на php, то расскажу про небольшую настройку, которая по умолчанию отключена, но в некоторых случаях её имеет смысл включить. Речь пойдёт про логирование использования функции mail(), с помощью которой можно отправлять email сообщения.
Хорошо, если веб приложение умеет использовать сторонние SMTP сервера для отправки почты, а не прямую отправку через встроенную функцию. Но это не всегда так. Другая сторона медали - если сайт или хостинг взломают, то часто начинают слать спам через php напрямую. Это самое популярное использование взломанного каким-нибудь ботом сайта через публичную уязвимость. Через него либо сразу спам начинают слать, либо ддосить кого-нибудь, реже - майнить. Майнинг сразу видно по возросшей нагрузке. А вот почту можно и не заметить.
Я обычно в таких случаях ставлю для локальной отправки postfix и слежу за его логом. Если вы с почтовыми серверами не особо знакомы, а вам нужен просто список отправленных писем, где одно письмо - одна строчка, то с логированием сдрествами php будет проще всего. К тому же этот лог в том числе покажет, какой конкретно скрипт сделал отправку, что в логе почтового сервера не увидеть, там этой информации в принципе нет.
Идём в настройки php, в файл
Можно направить вывод в какой-то текстовый файл вместо syslog, но могут возникнуть нюансы с доступом, если, к примеру, у вас используется php-fpm и для каждого сайта запускается пул под своим отдельным пользователем. Использовать syslog как единое централизованное хранилище - более универсальное решение. Но тут уже вам решать, как удобнее, в зависимости от ваших настроек. Можно и из syslog сложить все записи в отдельный файл, отфильтровав их по вхождению фразы mail().
Для этого рисуем конфиг для rsyslog в файле
Перезапускаем rsyslog:
И перезапускаем службу php в зависимости от того, в каком виде она используется. Отдельно отмечу, что, к примеру, в Debian файл php.ini для модуля Apache, для php-fpm, для запуска консольных скриптов через cli свой. Не перепутайте, куда будете вносить правки. Либо вносите сразу во все. Лучше создать отдельный файл, вместо правки общего. То есть для php-fpm кладём настройку примерно сюда:
Принудительно проверить работу можно простейшим скриптом такого содержания:
Запускаем скрипт:
В файле
Видим скрипт
Не забудьте настроить ротацию этого файла, если будете хранить лог в отдельном файле. Добавьте примерно такой конфиг для logrotate в файле
Я обычно складываю все старые логи в отдельную директорию. Не забудьте её создать, если скопируете этот конфиг. Если будете логировать не по дням, а по размеру файла, то не забудьте настроить запуск logrotate чаще, чем раз в сутки. И так же туда надо будет добавить вместо daily дополнительные параметры:
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#webserver #php
Хорошо, если веб приложение умеет использовать сторонние SMTP сервера для отправки почты, а не прямую отправку через встроенную функцию. Но это не всегда так. Другая сторона медали - если сайт или хостинг взломают, то часто начинают слать спам через php напрямую. Это самое популярное использование взломанного каким-нибудь ботом сайта через публичную уязвимость. Через него либо сразу спам начинают слать, либо ддосить кого-нибудь, реже - майнить. Майнинг сразу видно по возросшей нагрузке. А вот почту можно и не заметить.
Я обычно в таких случаях ставлю для локальной отправки postfix и слежу за его логом. Если вы с почтовыми серверами не особо знакомы, а вам нужен просто список отправленных писем, где одно письмо - одна строчка, то с логированием сдрествами php будет проще всего. К тому же этот лог в том числе покажет, какой конкретно скрипт сделал отправку, что в логе почтового сервера не увидеть, там этой информации в принципе нет.
Идём в настройки php, в файл
php.ini и раскомментируем там строку:mail.log = syslogМожно направить вывод в какой-то текстовый файл вместо syslog, но могут возникнуть нюансы с доступом, если, к примеру, у вас используется php-fpm и для каждого сайта запускается пул под своим отдельным пользователем. Использовать syslog как единое централизованное хранилище - более универсальное решение. Но тут уже вам решать, как удобнее, в зависимости от ваших настроек. Можно и из syslog сложить все записи в отдельный файл, отфильтровав их по вхождению фразы mail().
Для этого рисуем конфиг для rsyslog в файле
/etc/rsyslog.d/php-mail.conf::msg, contains, "mail()" /var/log/mail-php.log& stopПерезапускаем rsyslog:
# systemctl restart rsyslogИ перезапускаем службу php в зависимости от того, в каком виде она используется. Отдельно отмечу, что, к примеру, в Debian файл php.ini для модуля Apache, для php-fpm, для запуска консольных скриптов через cli свой. Не перепутайте, куда будете вносить правки. Либо вносите сразу во все. Лучше создать отдельный файл, вместо правки общего. То есть для php-fpm кладём настройку примерно сюда:
/etc/php/8.2/fpm/conf.d/mail-log.conf.Принудительно проверить работу можно простейшим скриптом такого содержания:
<?php$to = "user@example.com";$subject = "Привет от PHP!";$message = "Это тестовое письмо, отправленное через PHP скрипт.";mail($to, $subject, $message);?>Запускаем скрипт:
# php mail.phpВ файле
/var/log/mail-php.log наблюдаем запись:2025-06-09T00:07:09.607068+03:00 debian12-vm php: mail() on [/root/mail.php:5]: To: user@example.com -- Headers: -- Subject: Привет от PHP!Видим скрипт
/root/mail.php и конкретную строку 5, где сработала функция mail(). Это может очень пригодится при отладке неправомерных отправлений с сервера.Не забудьте настроить ротацию этого файла, если будете хранить лог в отдельном файле. Добавьте примерно такой конфиг для logrotate в файле
/etc/logrotate.d/mail-php:/var/log/mail-php.log { rotate 30 daily missingok notifempty compress olddir /var/log/old}Я обычно складываю все старые логи в отдельную директорию. Не забудьте её создать, если скопируете этот конфиг. Если будете логировать не по дням, а по размеру файла, то не забудьте настроить запуск logrotate чаще, чем раз в сутки. И так же туда надо будет добавить вместо daily дополнительные параметры:
size=50M dateext dateformat -%Y-%m-%d_%H-%s❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#webserver #php
👍87👎2
Существует известный сервис Ngrok для публикации веб приложений без прямого доступа к ним из интернета. Сервис выступает условно как публичный обратный прокси для вашего проекта. У него есть аналоги - localtunnel и Cloudflare Argo Tunnel. На днях в Яндексе вбил Ngrok, хотел освежить о нём информацию, и тут же первой строкой мне выскочила реклама аналогичного российского сервиса cloudpub. У него есть бесплатный тарифный план, так что решил попробовать.
Кратко поясню, как эти сервисы работают. Допустим, вы запускаете где-то у себя в локальном окружении какой-то веб сервер, например Nginx. Для него нет никаких пробросов портов, он никак не опубликован в интернет. А вы хотите, чтобы из интернета кто-то на него попадал. Например, это ваш личный Proxmox, у вас серый IP от провайдера, вы не хотите настраивать VPN, но хотите попадать в веб интерфейс откуда угодно.
Для этого вы регистрируетесь в сервисе, скачиваете к себе на сервер их клиент, запускаете его. И дальше через личный кабинет настраиваете публикацию вашего локального веб сервиса, куда вы поставили этого клиента. Получаете какой-то URL на временном домене или подключаете свой. И по этому урлу заходите через интернет на свой сервис. Плюс, этот сервис обычно поддерживает дополнительную функциональность в виде TLS сертификатов, дополнительной аутентификации и т.д. Всё это довольно удобно и пользуется спросом как в корпоративном сегменте, так и у продвинутых домашних пользователей.
В cloudpub всё примерно так же. Зарегистрировался на сайте, достаточно только email. Телефон или что-то ещё не нужно. В личном кабинете сразу же открывается инструкция, как пользоваться:
1️⃣ Скачиваешь на машину клиент. Поддерживаются клиенты под Windows, Linux, macOS, либо универсальный в Docker. Есть как с GUI, так и полностью консольные.
2️⃣ Распаковываешь клиент, проходишь аутентификацию:
3️⃣ Публикуешь веб сервис, который тут крутится:
Получаешь ссылку на случайный поддомен на базе cloudpub.ru.
4️⃣ В личном кабинете видно эту публикацию. Её можно изменить: поменять поддомен, включить дополнительную аутентификацию, добавить какие-то заголовки к HTTP запросам.
Это я описал работу бесплатного тарифного плана, который автоматом подключается после регистрации. В целом всё просто и удобно. Нигде не столкнулся с какими-то проблемами. Отмечу, что сервис мне незнаком, увидел впервые. Автора или компанию, которая его поддерживает, тоже не знаю. Используйте на свой страх и риск. Код клиента, кстати, открыт. Сделан на базе rathole.
Сразу предупрежу, не надо писать, что это реклама и т.д. У меня никто не заказывал никакую рекламу. Первый раз увидел сервис и попробовал. Почему-то когда я обозреваю какие-то иностранные сервисы, никто не пишет, что это реклама. Стоит написать про что-то отечественное, так сразу появляются претензии, что я что-то рекламирую. Вся заказная реклама публикуется с маркировкой в соответствии с законом о рекламе. Без исключений. Всё, что без отметок, это моя личная инициатива. За всё время ведения канала не было ни одного исключения.
#webserver #отечественное
Кратко поясню, как эти сервисы работают. Допустим, вы запускаете где-то у себя в локальном окружении какой-то веб сервер, например Nginx. Для него нет никаких пробросов портов, он никак не опубликован в интернет. А вы хотите, чтобы из интернета кто-то на него попадал. Например, это ваш личный Proxmox, у вас серый IP от провайдера, вы не хотите настраивать VPN, но хотите попадать в веб интерфейс откуда угодно.
Для этого вы регистрируетесь в сервисе, скачиваете к себе на сервер их клиент, запускаете его. И дальше через личный кабинет настраиваете публикацию вашего локального веб сервиса, куда вы поставили этого клиента. Получаете какой-то URL на временном домене или подключаете свой. И по этому урлу заходите через интернет на свой сервис. Плюс, этот сервис обычно поддерживает дополнительную функциональность в виде TLS сертификатов, дополнительной аутентификации и т.д. Всё это довольно удобно и пользуется спросом как в корпоративном сегменте, так и у продвинутых домашних пользователей.
В cloudpub всё примерно так же. Зарегистрировался на сайте, достаточно только email. Телефон или что-то ещё не нужно. В личном кабинете сразу же открывается инструкция, как пользоваться:
1️⃣ Скачиваешь на машину клиент. Поддерживаются клиенты под Windows, Linux, macOS, либо универсальный в Docker. Есть как с GUI, так и полностью консольные.
# wget https://cloudpub.ru/download/stable/clo-1.7.0-stable-linux-x86_64.tar.gz2️⃣ Распаковываешь клиент, проходишь аутентификацию:
# tar xzvf clo-1.7.0-stable-linux-x86_64.tar.gz # ./clo login3️⃣ Публикуешь веб сервис, который тут крутится:
# ./clo publish http 80Получаешь ссылку на случайный поддомен на базе cloudpub.ru.
4️⃣ В личном кабинете видно эту публикацию. Её можно изменить: поменять поддомен, включить дополнительную аутентификацию, добавить какие-то заголовки к HTTP запросам.
Это я описал работу бесплатного тарифного плана, который автоматом подключается после регистрации. В целом всё просто и удобно. Нигде не столкнулся с какими-то проблемами. Отмечу, что сервис мне незнаком, увидел впервые. Автора или компанию, которая его поддерживает, тоже не знаю. Используйте на свой страх и риск. Код клиента, кстати, открыт. Сделан на базе rathole.
Сразу предупрежу, не надо писать, что это реклама и т.д. У меня никто не заказывал никакую рекламу. Первый раз увидел сервис и попробовал. Почему-то когда я обозреваю какие-то иностранные сервисы, никто не пишет, что это реклама. Стоит написать про что-то отечественное, так сразу появляются претензии, что я что-то рекламирую. Вся заказная реклама публикуется с маркировкой в соответствии с законом о рекламе. Без исключений. Всё, что без отметок, это моя личная инициатива. За всё время ведения канала не было ни одного исключения.
#webserver #отечественное
👍145👎7
У меня на канале несколько лет назад уже был небольшой обзор на утилиту goaccess. Это очень простой и удобный просмотрщик логов веб сервера, который не потерял актуальность и по сей день, а скорее набрал её ещё больше. Хочу рассказать о нём подробнее с конкретными примерами.
Goaccess есть в стандартных репозиториях популярных дистрибутивов.
Также его можно запустить в Docker, образ allinurl/goaccess. Это позволит быстро получить самую свежую версию. В репозиториях она не всегда таковая.
Чтобы понять, о чём пойдёт речь, можно быстро посмотреть образец отчётов на основе логов веб сервера: https://rt.goaccess.io. Регистрация не требуется, сразу всё видно.
Для того, чтобы получить такую красоту у себя, достаточно сделать вот так:
или так:
Получили статичную страничку. Можно тут же её посмотреть через веб сервер на python:
Идём браузером на порт 8000 и смотрим там файлик
То же самое c Docker:
При этом информация в браузере будет обновляться автоматически. Даже страницу перезагружать не надо.
В goaccess можно отправлять вывод через пайп, а значит перед этим его можно грепнуть, причём как для статики, так и в режиме реального времени. Например, можно собрать статистику по конкретному IP адресу. Разово:
И то же самое в режиме реального времени:
Инструмент очень удобный, особенно для отладки в режиме реального времени. Можно запустить нагрузочное тестирование и наблюдать, что происходит. Либо просто использовать для анализа статистики там, где нет никакой системы сбора и анализа логов. Можно быстро оценить состояние веб сервера и запросов к нему. Кто и куда спамит запросами, какие есть ответы с ошибками и т.д.
Я видел, что некоторые парсят логи nginx-ingress в Kubernetes с помощью goaccess. Автор собрал простенький скрипт на python, который рисует отдельные дашборды для каждого сервиса.
Если запустить goaccess без параметров, то статистика откроется прямо в терминале:
Инструмент простой, удобный, функциональный. Если не знали о нём, то берите на вооружение.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX
#webserver
Goaccess есть в стандартных репозиториях популярных дистрибутивов.
# apt install goaccessТакже его можно запустить в Docker, образ allinurl/goaccess. Это позволит быстро получить самую свежую версию. В репозиториях она не всегда таковая.
Чтобы понять, о чём пойдёт речь, можно быстро посмотреть образец отчётов на основе логов веб сервера: https://rt.goaccess.io. Регистрация не требуется, сразу всё видно.
Для того, чтобы получить такую красоту у себя, достаточно сделать вот так:
# goaccess access.log -o report.html --log-format=COMBINEDили так:
# touch report.html# cat access.log | docker run --rm -i -v ./report.html:/report.html -e LANG=$LANG allinurl/goaccess -a -o report.html --log-format=COMBINED -Получили статичную страничку. Можно тут же её посмотреть через веб сервер на python:
# python3 -m http.serverИдём браузером на порт 8000 и смотрим там файлик
report.html. Это статистика, которая формируется после ручного запуска goaccess. Можно запустить его в режиме обновления этой статистики онлайн:# goaccess access.log -o report.html --log-format=COMBINED --real-time-htmlТо же самое c Docker:
# tail -F access.log | docker run -p 7890:7890 --rm -i -e LANG=$LANG allinurl/goaccess -a -o report.html --log-format COMBINED --real-time-html -При этом информация в браузере будет обновляться автоматически. Даже страницу перезагружать не надо.
В goaccess можно отправлять вывод через пайп, а значит перед этим его можно грепнуть, причём как для статики, так и в режиме реального времени. Например, можно собрать статистику по конкретному IP адресу. Разово:
# cat access.log | grep '1.2.3.4' | goaccess --log-format=COMBINED -o report.html -И то же самое в режиме реального времени:
# tail -f -n +0 access.log | grep -i --line-buffered '1.2.3.4' | goaccess -o report.html --log-format=COMBINED --real-time-html -Инструмент очень удобный, особенно для отладки в режиме реального времени. Можно запустить нагрузочное тестирование и наблюдать, что происходит. Либо просто использовать для анализа статистики там, где нет никакой системы сбора и анализа логов. Можно быстро оценить состояние веб сервера и запросов к нему. Кто и куда спамит запросами, какие есть ответы с ошибками и т.д.
Я видел, что некоторые парсят логи nginx-ingress в Kubernetes с помощью goaccess. Автор собрал простенький скрипт на python, который рисует отдельные дашборды для каждого сервиса.
Если запустить goaccess без параметров, то статистика откроется прямо в терминале:
# goaccess access.logИнструмент простой, удобный, функциональный. Если не знали о нём, то берите на вооружение.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:
#webserver
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍96👎2
Заметил, как на одном небольшом веб сервере постоянно занят весь swap, хотя использование оперативной памяти там сбалансировано и явного недостатка не возникает. Решил повнимательнее посмотреть, что там происходит и почему складывается такая ситуация. Интуитивно кажется, что swap не должен использоваться, тем более на весь объём, если оперативной памяти достаточно, но это не совсем так.
В данном случае речь пойдёт про типовой веб сервер всё в одном: MariaDB + Angie + PHP-fpm и некоторые сопутствующие сервисы для обеспечения безопасности, мониторинга и сбора логов.
Первым делом смотрю, кто занимает swap. В заметке по ссылке всё описано, не буду подробно останавливаться на этом. Кратко можно посмотреть прямо в консоли:
Первая строка - главный потребитель swap. В моём случае процесс mariadbd. Смотрим состояние памяти:
В системе 4GB оперативной памяти и 1GB swap. При этом доступно более 1GB оперативной памяти. По логике хотя бы её часть ещё могла бы использоваться вместо свопа.
За то, как активно система использует swap, отвечает параметр ядра vm.swappiness. Смотрим текущее значение:
По умолчанию разработчики Linux его ставят в значении 60. Оно обеспечивает баланс между swap и page cache. Напомню, для тех, кто не знает или забыл, что свободная оперативная память в Linux не простаивает, а используется под статический кэш, называемый page cache. Туда попадают данные, к которым чаще всего обращаются процессы, запущенные в системе. Таким образом снижается нагрузка на диски и уменьшается время доступа к этим данным.
Самой частой и очевидной рекомендацией по снижению использования свопа является уменьшение параметра vm.swappiness, например, до 10-ти. В этом случае данные в swap будут уходить только при очень серьёзном дефиците доступной оперативной памяти.
Казалось бы, уменьшай vm.swappiness, что тут думать. Но не всё так просто. Уменьшение использования swap уменьшит и размер доступной памяти под page cache. А в случае смешанной нагрузки на сервер, особенно со статикой от сайтов, не факт, что так будет лучше. Итоговая производительность всех сервисов может наоборот снизиться. Измерить результат в конкретных метриках очень сложно.
При таких вводных становится понятно, что если есть возможность и целесообразность, то разнородные сервисы лучше разделять по разным виртуалкам. Если у вас на сервере только СУБД и памяти хватает, то можно особо не заморачиваться и реально ставить vm.swappiness = 10. По моим представлениям это практически всегда пойдёт только в плюс производительности. Если СУБД чётко настроить под конкретные параметры виртуальной машины, она не будет выходить за свои лимиты настроенных ресурсов.
А вот если у вас разнородные сервисы, нагрузка смешанная, много чтений мелких файлов с диска, есть всплески нагрузки, то уже однозначно не ответить, как лучше поступить. Я лично не стал трогать vm.swappiness, оставил значение по умолчанию в 60. Не знаю точно, что СУБД сгружает в swap. По логике это должно быть что-то не очень важное и требовательное, раз СУБД решила не забирать память под кэши, а сгрузила их в swap. Ну и плюс, проходить внезапные пики потребления памяти будет проще, когда есть запас.
Если тоже задавались этим вопросом, то что в итоге для себя решили с использованием swap?
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX
#perfomance #webserver
В данном случае речь пойдёт про типовой веб сервер всё в одном: MariaDB + Angie + PHP-fpm и некоторые сопутствующие сервисы для обеспечения безопасности, мониторинга и сбора логов.
Первым делом смотрю, кто занимает swap. В заметке по ссылке всё описано, не буду подробно останавливаться на этом. Кратко можно посмотреть прямо в консоли:
# for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3} END { print ""}' $file; done | sort -k 2 -n -r | lessПервая строка - главный потребитель swap. В моём случае процесс mariadbd. Смотрим состояние памяти:
# free -m
total used free shared buff/cache available
Mem: 3915 2731 185 89 1373 1183
Swap: 976 906 69В системе 4GB оперативной памяти и 1GB swap. При этом доступно более 1GB оперативной памяти. По логике хотя бы её часть ещё могла бы использоваться вместо свопа.
За то, как активно система использует swap, отвечает параметр ядра vm.swappiness. Смотрим текущее значение:
# sysctl vm.swappinessvm.swappiness = 60По умолчанию разработчики Linux его ставят в значении 60. Оно обеспечивает баланс между swap и page cache. Напомню, для тех, кто не знает или забыл, что свободная оперативная память в Linux не простаивает, а используется под статический кэш, называемый page cache. Туда попадают данные, к которым чаще всего обращаются процессы, запущенные в системе. Таким образом снижается нагрузка на диски и уменьшается время доступа к этим данным.
Самой частой и очевидной рекомендацией по снижению использования свопа является уменьшение параметра vm.swappiness, например, до 10-ти. В этом случае данные в swap будут уходить только при очень серьёзном дефиците доступной оперативной памяти.
Казалось бы, уменьшай vm.swappiness, что тут думать. Но не всё так просто. Уменьшение использования swap уменьшит и размер доступной памяти под page cache. А в случае смешанной нагрузки на сервер, особенно со статикой от сайтов, не факт, что так будет лучше. Итоговая производительность всех сервисов может наоборот снизиться. Измерить результат в конкретных метриках очень сложно.
При таких вводных становится понятно, что если есть возможность и целесообразность, то разнородные сервисы лучше разделять по разным виртуалкам. Если у вас на сервере только СУБД и памяти хватает, то можно особо не заморачиваться и реально ставить vm.swappiness = 10. По моим представлениям это практически всегда пойдёт только в плюс производительности. Если СУБД чётко настроить под конкретные параметры виртуальной машины, она не будет выходить за свои лимиты настроенных ресурсов.
А вот если у вас разнородные сервисы, нагрузка смешанная, много чтений мелких файлов с диска, есть всплески нагрузки, то уже однозначно не ответить, как лучше поступить. Я лично не стал трогать vm.swappiness, оставил значение по умолчанию в 60. Не знаю точно, что СУБД сгружает в swap. По логике это должно быть что-то не очень важное и требовательное, раз СУБД решила не забирать память под кэши, а сгрузила их в swap. Ну и плюс, проходить внезапные пики потребления памяти будет проще, когда есть запас.
Если тоже задавались этим вопросом, то что в итоге для себя решили с использованием swap?
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:
#perfomance #webserver
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍133👎4
Думаю, все уже слышали или знают такой продукт, как Angie. Это веб сервер, форк Nginx, который развивается, насколько я понимаю, независимо от него. Я уже давно нигде не устанавливаю Nginx. Если только по привычке на тестах каких-нибудь, потому что он есть в базовых репах дистрибутивов, а Angie - нет. В работу везде ставлю Angie, потому что он функциональнее и удобнее Nginx.
Мне сейчас сходу трудно перечислить ключевые отличия от Nginx, потому что за последним банально перестал следить. Мне лично Angie сразу понравился в первую очередь тем, что там:
🔹Удобнее устанавливать дополнительные модули. Они все упакованы в пакеты в едином репозитории. Просто берёшь, ставишь и настраиваешь. В то время, как Nginx приходилось собирать самому с нужными модулями.
🔹У Angie реализован экспорт метрик для мониторинга, плюс панель веб управления, где своя визуализация некоторых метрик и настроек. Я сделал себе шаблон для Zabbix, но после того, как разработчики опубликовали свой дашборд для Grafana, перешёл на него, так как стало лень поддерживать свой шаблон самому. А тут всё уже есть в готовом виде.
🔹Над Angie активно работают и улучшают, в том числе полностью бесплатную open source версию. Бесплатный Nginx после продажи компании F5 как-будто развивать вообще перестали и просто поддерживают на плаву.
Сейчас Angie умеет, как и Traefik, проксировать запросы в Docker контейнеры на основании их меток. На этой теме последний поднялся в своё время, потому что никто так больше не умел. Я недавно случайно увидел эту возможность. Не знаю, когда она появилось, но это удобно.
Про настройку Angie написал отличный содержательный цикл статей Лавлинский Николай. Его материалы, как и анонсы вебинаров Отуса с его участием, можно периодически наблюдать на моём канале.
Каждая статья содержит как текстовое описание, так и подробное видео с примерами. Очень содержательный материал. Рекомендую. Я смотрел все видео. Там и по базовой, и не только, настройки есть всё, что нужно. Цикл опубликован на Хабре:
◽️Почему стоит переходить на Angie.
◽️Установка Angie из пакетов и в докере.
◽️Переезд с Nginx на Angie. Пошаговая инструкция.
◽️Настройка location в Angie. Разделение динамических и статических запросов.
◽️Перенаправления в Angie: return, rewrite и примеры их применения.
◽️Сжатие текста в Angie: статика, динамика, производительность.
◽️Серверное кэширование в Angie: тонкости настройки.
◽️Настройка TLS в Angie: безопасность и скорость.
◽️Настройка Angie в роли обратного HTTP-прокси.
◽️Балансировка нагрузки для HTTP(S) в Angie.
◽️Мониторинг Angie с помощью Console Light и API.
◽️Балансировка и проксирование L4-трафика в Angie.
◽️Клиентское кэширование в Angie.
◽️Динамические группы проксируемых серверов в Angie.
◽️Мониторинг Angie с Prometheus и Grafana.
Немного не в тему, но добавлю ещё одну интересную ссылку с полезным материалом:
⇨ Ещё одно тестирование Angie, HAProxy, Envoy, Caddy и Traefik от Devhands
HAProxy показывает наиболее сбалансированные и стабильные результаты на стандартных настройках. Старый, проверенный универсальный балансировщик.
Если всё ещё используете Nginx, рекомендую попробовать Angie. Переезд на него не требует практически никаких изменений конфигурации. Возможно где-то только пути придётся поправить с
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX
#webserver #angie #отечественное
Мне сейчас сходу трудно перечислить ключевые отличия от Nginx, потому что за последним банально перестал следить. Мне лично Angie сразу понравился в первую очередь тем, что там:
🔹Удобнее устанавливать дополнительные модули. Они все упакованы в пакеты в едином репозитории. Просто берёшь, ставишь и настраиваешь. В то время, как Nginx приходилось собирать самому с нужными модулями.
🔹У Angie реализован экспорт метрик для мониторинга, плюс панель веб управления, где своя визуализация некоторых метрик и настроек. Я сделал себе шаблон для Zabbix, но после того, как разработчики опубликовали свой дашборд для Grafana, перешёл на него, так как стало лень поддерживать свой шаблон самому. А тут всё уже есть в готовом виде.
🔹Над Angie активно работают и улучшают, в том числе полностью бесплатную open source версию. Бесплатный Nginx после продажи компании F5 как-будто развивать вообще перестали и просто поддерживают на плаву.
Сейчас Angie умеет, как и Traefik, проксировать запросы в Docker контейнеры на основании их меток. На этой теме последний поднялся в своё время, потому что никто так больше не умел. Я недавно случайно увидел эту возможность. Не знаю, когда она появилось, но это удобно.
Про настройку Angie написал отличный содержательный цикл статей Лавлинский Николай. Его материалы, как и анонсы вебинаров Отуса с его участием, можно периодически наблюдать на моём канале.
Каждая статья содержит как текстовое описание, так и подробное видео с примерами. Очень содержательный материал. Рекомендую. Я смотрел все видео. Там и по базовой, и не только, настройки есть всё, что нужно. Цикл опубликован на Хабре:
◽️Почему стоит переходить на Angie.
◽️Установка Angie из пакетов и в докере.
◽️Переезд с Nginx на Angie. Пошаговая инструкция.
◽️Настройка location в Angie. Разделение динамических и статических запросов.
◽️Перенаправления в Angie: return, rewrite и примеры их применения.
◽️Сжатие текста в Angie: статика, динамика, производительность.
◽️Серверное кэширование в Angie: тонкости настройки.
◽️Настройка TLS в Angie: безопасность и скорость.
◽️Настройка Angie в роли обратного HTTP-прокси.
◽️Балансировка нагрузки для HTTP(S) в Angie.
◽️Мониторинг Angie с помощью Console Light и API.
◽️Балансировка и проксирование L4-трафика в Angie.
◽️Клиентское кэширование в Angie.
◽️Динамические группы проксируемых серверов в Angie.
◽️Мониторинг Angie с Prometheus и Grafana.
Немного не в тему, но добавлю ещё одну интересную ссылку с полезным материалом:
⇨ Ещё одно тестирование Angie, HAProxy, Envoy, Caddy и Traefik от Devhands
HAProxy показывает наиболее сбалансированные и стабильные результаты на стандартных настройках. Старый, проверенный универсальный балансировщик.
Если всё ещё используете Nginx, рекомендую попробовать Angie. Переезд на него не требует практически никаких изменений конфигурации. Возможно где-то только пути придётся поправить с
/etc/nginx на /etc/angie, а может и этого не придётся в зависимости от структуры вашей конфигурации.❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:
#webserver #angie #отечественное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍181👎3
Ранее я уже рассказывал про Small HTTP server. Это необычный веб сервер из далёкого виндового прошлого 90-х годов, который до сих пор поддерживается, немного развивается, и за это время оброс дополнительной функциональностью. Я с тех пор подписался на канал автора и наблюдал, как время от времени выходят обновления.
Проект меня заинтересовал. В первую очередь тем, что там из дополнительной функциональности заявлен HTTP TLS VPN сервер с небольшим VPN клиентом под Windows и Linux. С учётом того, что продукт этот мало кому известен, подумал, что это может быть полезным. Забегая вперёд скажу, что у меня не получилось его настроить, потому что надоело разбираться с продуктом, для которого толком нет документации и примеров настройки. В какой-то момент не захотелось дальше время тратить.
Стало жаль терять то, что уже сделал, поэтому решил написать публикацию. Автор выкладывает исходники и deb пакеты для запуска сервера под Linux. Но у меня не получилось установить из готового пакета, потому что он хочет старую версию libssl, которой в современной системе нет. А если берёшь старую систему, то не подходит версия libgnutls, так как требуется более новая.
Судя по всему автор собирает всё это сам с явным подключением нужных версий. Я в итоге нашёл конфигурацию дистрибутива, куда удалось автоматом всё установить из пакетов и не собирать вручную. Завернул всё это в Dockerfile и оформил в виде Docker Compose.
Выложил всё на Gitflic, там же и описание запуска:
⇨ https://gitflic.ru/project/serveradmin/smallsrv
Клонируете себе репозиторий:
При необходимости правите конфигурацию сервера в файле
После этого запускаете:
Будет собран локальный образ и запущен контейнер. Если надо что-то настроить в контейнере, то зайдите в него:
Если измените конфигурацию сервера, контейнер нужно будет перезапустить:
Не знаю, пригодится ли это кому-нибудь, но раз уж сделал, то выкладываю. Это, кстати, наглядный пример того, зачем может пригодиться Docker. А то частенько спрашивают люди, зачем он нужен, если ты не разработчик и не работаешь с микросервисами.
С помощью Docker очень легко упаковать приложение в преднастроенную среду и не мучать пользователей с настройкой. Причём сделать это может и человек со стороны. Теперь можно без проблем запустить приложение на любом линуксе.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:📱 Telegram | 🌐 Сайт | 📲 MAX
#webserver #vpn
Проект меня заинтересовал. В первую очередь тем, что там из дополнительной функциональности заявлен HTTP TLS VPN сервер с небольшим VPN клиентом под Windows и Linux. С учётом того, что продукт этот мало кому известен, подумал, что это может быть полезным. Забегая вперёд скажу, что у меня не получилось его настроить, потому что надоело разбираться с продуктом, для которого толком нет документации и примеров настройки. В какой-то момент не захотелось дальше время тратить.
Стало жаль терять то, что уже сделал, поэтому решил написать публикацию. Автор выкладывает исходники и deb пакеты для запуска сервера под Linux. Но у меня не получилось установить из готового пакета, потому что он хочет старую версию libssl, которой в современной системе нет. А если берёшь старую систему, то не подходит версия libgnutls, так как требуется более новая.
Судя по всему автор собирает всё это сам с явным подключением нужных версий. Я в итоге нашёл конфигурацию дистрибутива, куда удалось автоматом всё установить из пакетов и не собирать вручную. Завернул всё это в Dockerfile и оформил в виде Docker Compose.
Выложил всё на Gitflic, там же и описание запуска:
⇨ https://gitflic.ru/project/serveradmin/smallsrv
Клонируете себе репозиторий:
# git clone https://gitflic.ru/project/serveradmin/smallsrv.git# cd smallsrvПри необходимости правите конфигурацию сервера в файле
httpd.cfg, наполняете директорию www/. Если туда не положить файл index.html, то будет работать простой листинг файлов. Можно в качестве простого файлового сервера использовать.После этого запускаете:
# docker compose up -dБудет собран локальный образ и запущен контейнер. Если надо что-то настроить в контейнере, то зайдите в него:
# docker exec -it smallsrv bashЕсли измените конфигурацию сервера, контейнер нужно будет перезапустить:
# docker restart smallsrvНе знаю, пригодится ли это кому-нибудь, но раз уж сделал, то выкладываю. Это, кстати, наглядный пример того, зачем может пригодиться Docker. А то частенько спрашивают люди, зачем он нужен, если ты не разработчик и не работаешь с микросервисами.
С помощью Docker очень легко упаковать приложение в преднастроенную среду и не мучать пользователей с настройкой. Причём сделать это может и человек со стороны. Теперь можно без проблем запустить приложение на любом линуксе.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
———
ServerAdmin:
#webserver #vpn
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍71👎4