Генератор конфигураций Nginx
Писать конфигурацию Nginx с нуля означает помнить каждую строку proxy_set_header, каждый MIME-тип, который сжимает gzip, и разницу между try_files $uri/ /index.php?$args и вариантом, который незаметно ломает маршрутизацию. Этот генератор спрашивает домен, upstream, обработчик PHP и пути к файлам SSL, а затем выдаёт server block с разумными значениями по умолчанию для TLS, HTTP/2, кэширования статики и сжатия.
Как создать свой server block
-
1
Выберите пресет
Статический сайт, PHP-FPM (Laravel, WordPress), обратный прокси для Node.js или простой редирект 301.
-
2
Введите домен
Укажите список server_name: обычно это варианты с www и без него.
-
3
Задайте параметры SSL
Укажите пути к файлам fullchain и privkey или пропустите шаг, если используете только HTTP.
-
4
Настройте upstream
Порт, путь к сокету или URL бэкенда для случаев с proxy_pass.
-
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. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.
Инструмент доступен на других языках
- مولّد إعدادات Nginx [AR]
- Générateur de configuration Nginx [FR]
- Nginx-konfigurationsgenerator [SV]
- Nginx Konfigurationsgenerator [DE]
- ตัวสร้างไฟล์ config ของ Nginx [TH]
- Generator Konfigurasi Nginx [ID]
- Nginx 設定ジェネレーター [JA]
- Nginx 설정 생성기 [KO]
- Nginx-configuratiegenerator [NL]
- Trình tạo cấu hình Nginx [VI]
- Generador de Configuración de Nginx [ES]
- Generator konfiguracji Nginx [PL]
- Gerador de Configuração Nginx [PT]
- Nginx Config Generator [EN]
- Generatore di Configurazione Nginx [IT]
- Nginx Yapılandırma Üreteci [TR]
- Nginx 配置生成器 [ZH]