nginx
Опасная уязвимость в Nginx? Хакеры угрожают ее продать, в Nginx им не верят
Технічний редактор Highload

Хакерская группировка BlueHornet сообщила, что в ее распоряжении есть работающий эксплойт для Nginx 1.18. Разработчики Nginx изучили эту уязвимость и рассказали, как с ней бороться.
Руководство для начинающих по nginx
Автор
Nginx — популярный быстрый веб-сервер, который помогает связать воедино компоненты приложения: файлы HTML, CSS и JavaScript, бэкенд одного или сразу нескольких сервисов. Он также используется для распределения нагрузки, кеширования HTTP и обратного проксирования.
Переехал в Польшу, потом — в Португалию, а вещи приходилось раздавать: как я разработал собственный маркетплейс
Редакторка у Highload
Highload продолжает публиковать истории о pet-проектах, вошедших в топ-20 лучших по итогам голосования наших читателей. Параллельно эти проекты оценивает жюри из опытных разработчиков и инвесторов. Победителей конкурса мы планируем объявить 10 июля.
Правильная конфигурация Nginx
Технічний редактор Highload
Наткнуться на подводные камни в конфигурации и работе веб-сервера очень легко. Но трудно понять причину некорректной или не всегда корректной/ошибочной работы, если все правила соблюдаются.
nginx.conf
Технічний редактор Highload
nginx.conf — конфигурационный файл Nginx. Чтобы его найти нужно выполнить команду:
Cache-control с динамикой
Заголовок Cache-control позволяет значительно увеличить скорость загрузки сайта, а также разгрузить канал между сервером и пользователем. Этот заголовок включает кэширование и просто в применении для файлов, которые никогда не меняются. Но для того, чтобы использовать это преимущество для файлов, которые могут меняться, нужно детальнее разобраться в клиентском кэшировании:
Кэширование с Nginx
Технічний редактор Highload
Nginx умеет кэшировать запросы самостоятельно. Преимущества использования Nginx cache в его простоте по сравнению с Varnish.
Scaling приложения на Python/Django
Технічний редактор Highload
За более, чем 20 лет существования, Python обзавелся толпой фанатов, большим количеством модулей для всех популярных платформ и множеством Фреймворков. Среди последних заслуженной популярностью пользуется Django, который используется в Instagram, Disqus, Mozilla, Pinterest. Их опыт показывает, что Django справляется с высочайшей нагрузкой и подходит для масштабирования проектов.
Сбор метрик из Nginx’a в Clickhouse
Запись данных в Clickhouse (и другие векторные базы) может достигать производительности в миллионы строк в секунду. Для этого важно писать данные крупными пакетами (сотни тысяч…миллионы строк в пакете).
Оптимизация изображений с WebP
Технічний редактор Highload
Минификация и сжатие уже давно стали вполне стандартными вещами для оптимизации кода веб-страниц. Все популярные веб-ресурсы оптимизируют изображения, используют все тот же CSS, когда это возможно, и выбирают правильные форматы картинок.
Оптимизация Web сервера
Технічний редактор Highload
Web сервер – это самое первое звено в работе любого Web сайта. Он принимает запрос от клиента, формирует ответ и отправляет его обратно клиенту. Когда количество таких запросов растет, скорость работы Web сервера будет падать.
Как включить GZIP в Nginx?
Технічний редактор Highload
Gzip текстовых файлов (JS/CSS/HTML) позволяет существенно уменьшить объемы данных, которые будет получать посетитель сайта. Сжатие поддерживают все современные браузеры, поэтому включать его нужно обязательно:
Ошибка 502 bad gateway в Nginx
Технічний редактор Highload
Ошибка 502 Bad Gateway означает, что Nginx не может получить ответ от какого-то сервиса. Gateway означает, что ошибка произошла не внутри самого сервера, а где-то на уровне связи между ним и другой программой.
Как сделать 301 редирект в Nginx?
Для того, чтобы сделать Nginx redirect 301 необходимо использовать rewrite правило с permanent в конце:
server {
Оптимальная настройка Nginx
Технічний редактор Highload
В стандартной конфигурации Nginx может работать при очень больших нагрузках. Тем не менее, эффективность его работы можно значительно повысить, настроив его параметры. Такая настройка называется тюнинг (tuning — подстройка, регулировка).
Превью картинок с ngx_http_image_filter_module
Зачастую на мультимедийных сайтах существует задача выдавать картинки (часто пользовательское фото) в различных размерах (thumbnails). Причем, в большинстве случаев приходится поддерживать несколько размерных версий картинок (например, пользовательское фото vkontakte.ru имеет 3 различные размерные версии).
Let’s Encrypt для шифрования соединения в Nginx
Let’s Encrypt – бесплатный, открытый и автоматизированный центр сертификации, который уже выдал [https://letsencrypt.org/stats/ более 5 млн сертификатов]. Основные преимущества включают:
NginScript на практике
NginScript — это среда выполнения JavaScript в Nginx. Его парсер в настоящее время поддерживает ECMAScript 5 (обещают в будущем расширить поддержку). Имеется компилятор внутреннего байткода, который затем выполняется в Nginx каждый раз, когда вызывается JavaScript. Для этого используется виртуальная машина на основе регистров.
Распределенный кеш на основе Nginx и proxy_cache
При использовании кеширования место на диске рано или поздно закончится. В таком случае обычно используют очистки кеша. Например, удалять все файлы, которые на запрашивались больше 7 дней. В Nginx это настраивается так:
Логи error_log и access_log в Nginx
Технічний редактор Highload
Файлы логов — первое место, где нужно искать ошибки. Особенно если это касается веб-сервера. В Nginx всего два основных лога: error_log и access_log.
Анализ и оптимизация времени TTFB
Технічний редактор Highload
В широком смысле, TTFB — это метрика, которая показывает время до получения первого байта (сетевого пакета) веб-страницы после отправки запроса со стороны клиента.
Ошибка 500 Internal Server Error
Технічний редактор Highload
В большинстве случаев ошибка Internal Server Error вызвана неверной конфигурацией Nginx. Так что используйте лучшие практики по настройке веб-сервера. И не забудьте включить логирование ошибок – обычно Nginx подсказывает причину ошибку в журнале.
Zabbix и Munin для сбора статистики Nginx
Технічний редактор Highload
Профилирование и мониторинг крайне важны для стабильной работы высоконагруженной системы. Кроме логов ошибок и запросов, Nginx имеет собственный модуль статистики [https://nginx.org/ru/docs/http/ngx_http_stub_status_module.html ngx_http_stub_status_module] с базовыми данными о работе веб-сервера.
Конфигурация nginx + php 7
Сначала необходимо убедиться, что nginx и php7 fpm установлены:
Ошибка 504 Gateway Timeout в Nginx
Технічний редактор Highload
Ошибка 504 gateway time-out возникает, когда Nginx не может достаточно долго получить ответ от какого-либо сервиса. Например от PHP-FPM.
Ошибка 413 Request Entity Too Large
Технічний редактор Highload
Ошибка HTTP 413 (Request Entity Too Large Error) означает, что клиент отправил слишком большой запрос на сервер. В Nginx максимальный размер запроса регулируется таким параметром:
Ошибка upstream timed out в Nginx
Технічний редактор Highload
Практика показывает, что ошибка upstream timed out (110: Connection timed out) может возникать в двух случаях. Причем название самой ошибки указывает на решение — необходимо увеличить время ожидания в настройках веб-сервера.
Ошибка 400 Bad Request в Nginx
Технічний редактор Highload
Ошибка 400 Bad Request возникает, когда клиент отправляет на Nginx неверный запрос. Это случается когда размер заголовков запроса больше допустимого предела. Например, браузер отправляет слишком много Cookies.
Сжатие gzip для js/css/html
Современные браузеры поддерживают сжатый контент, т.к. он является частью спецификации протокола HTTP 1.1. Сжатие текстовых форматов (CSS, Javascipt и HTML) может уменьшить их объем на 70%. Работает все очень просто. Перед отправкой ответа сервер сжимает данные. Браузер при получении сжатого ответа разжимает его и показывает результат.
Архитектура высоких нагрузок
Технічний редактор Highload
Архитектурные решения — фундамент любых приложений. В том числе и приложений с высокими нагрузками. Важно понимать, что архитектура Web приложения определяет 95% успешности его работы. В том числе способность справляться с нагрузками.
Unix сокеты c Nginx и PHP
Если вся Ваша связка nginx/php работает на одном сервере, лучше использовать unix-сокеты вместо tcp-сокетов для работы:
Кэширование статики и cache-control
Технічний редактор Highload
Клиентское кэширование — это способность браузера сохранять локально файлы, чтобы не делать к ним повторных обращений. Это очень полезно для картинок и CSS/Javascript файлов. Когда человек переходит по страницам браузер постоянно будет запрашивать одни и те же файлы, если не использовать механизм кэширования на браузере.
Оптимизация TLS в NGINX
Технічний редактор Highload
TLS (он же Transport Layer Security) – протокол защиты веб-страниц, который заменил собой SSL. По сути TLS = SSL и является следующим поколением (версией) устаревшего и подверженного POODLE-атакам стандарта.
Как перезапустить nginx?
Технічний редактор Highload
Существует два способа перезапуска Nginx’a после обновления конфигурационного файла nginx.conf:
Как использовать Cache-control в Nginx?
Технічний редактор Highload
Заголовок Cache-control позволяет сохранить определенные файлы с сайта в кеше браузера, чтобы при повторном обращении браузер использовал кеш вместо запроса к сайту. Это позволяет значительно увеличить скорость загрузки сайта для людей, которые смотрят более одной страницы.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: