Генератор конфигураций Nginx

Сгенерировать конфиг Nginx

Писать конфигурацию Nginx с нуля означает помнить каждую строку proxy_set_header, каждый MIME-тип, который сжимает gzip, и разницу между try_files $uri/ /index.php?$args и вариантом, который незаметно ломает маршрутизацию. Этот генератор спрашивает домен, upstream, обработчик PHP и пути к файлам SSL, а затем выдаёт server block с разумными значениями по умолчанию для TLS, HTTP/2, кэширования статики и сжатия.

Как создать свой server block

  1. 1

    Выберите пресет

    Статический сайт, PHP-FPM (Laravel, WordPress), обратный прокси для Node.js или простой редирект 301.

  2. 2

    Введите домен

    Укажите список server_name: обычно это варианты с www и без него.

  3. 3

    Задайте параметры SSL

    Укажите пути к файлам fullchain и privkey или пропустите шаг, если используете только HTTP.

  4. 4

    Настройте upstream

    Порт, путь к сокету или URL бэкенда для случаев с proxy_pass.

  5. 5

    Скопируйте и разверните

    Положите результат в /etc/nginx/sites-available, выполните nginx -t и перезагрузите конфигурацию Nginx.

Как выглядит хороший server block

Современный виртуальный хост Nginx обычно состоит из таких частей:

Часть конфигурации Назначение
listen 443 ssl http2 Принимать HTTPS с включённым HTTP/2
ssl_certificate + ssl_certificate_key Указать файлы сертификата и приватного ключа TLS
ssl_protocols TLSv1.2 TLSv1.3 Отказаться от устаревших версий TLS
gzip on + список типов Сжимать текст, HTML, JSON, JS и CSS на лету
Заголовки expires для статики Сократить повторные запросы вернувшихся посетителей
try_files Передать запрос фронт-контроллеру (PHP, Laravel и т. д.)
HSTS + заголовки безопасности Заставить браузер всегда работать по TLS

Основы обратного прокси

Для приложений на Node.js, Python и Ruby, работающих за Nginx:

location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

Забыть про X-Forwarded-For: классический способ потерять реальные IP-адреса клиентов в логах приложения.

Частые ошибки

  • Нет запасного блока server_name. Если ни одно имя не совпало, Nginx возьмёт первый server block как блок по умолчанию. Добавьте перехватывающий блок server_name _, который возвращает 444, чтобы защититься от атак через заголовок Host.
  • Неверный порядок сертификатов. В файле ssl_certificate должна быть полная цепочка (fullchain: сертификат сайта и промежуточные сертификаты), а не только сертификат сайта.
  • Слишком агрессивное кэширование. Заголовок expires 1y для /index.html сломает выкладку новых версий. Вместо этого добавляйте версию в URL статических файлов.
  • Перезагрузка без проверки. Всегда выполняйте nginx -t перед systemctl reload nginx: одна синтаксическая ошибка уронит весь сайт.

Часто задаваемые вопросы

HTTP/2 стабилен и полностью поддерживается в Nginx 1.25 и новее. HTTP/3 (QUIC) доступен там же, но пока считается экспериментальным. Для боевой конфигурации сегодня включайте HTTP/2, а HTTP/3 при желании добавляйте директивами http3 и quic.

По сложившейся практике публичные цепочки лежат в /etc/ssl/certs/, а приватные ключи: в /etc/ssl/private/. Let’s Encrypt складывает всё в /etc/letsencrypt/live/domain/. Используйте тот путь, который ожидает ваш инструмент обновления сертификатов.

Да, для большинства сайтов. Добавьте отдельный server block на порту 80, который возвращает 301 https://$host$request_uri. Вместе с HSTS этот HTTP-блок после первого запроса почти не будет использоваться.

Выполните sudo nginx -t: команда разберёт конфигурацию, ничего не перезагружая. Если выведены “syntax is ok” и “test is successful”, примените изменения через sudo systemctl reload nginx. Никогда не используйте restart на боевом сервере: reload применяет конфигурацию без разрыва обслуживания.

Сопутствующие инструменты

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Конвертер CMYK в RGB

Преобразуйте проценты CMYK в приблизительные значения RGB и Hex для быстрого экранного предпросмотра по стандартной формуле.

Шпаргалка по Markdown

Практический справочник Markdown с настоящим предпросмотром и готовыми для копирования примерами заголовков, списков, таблиц, кода, ссылок, изображений и синтаксиса GFM.

Генератор случайных букв

Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.

Инструмент доступен на других языках