Перейти к содержимому
ToolMug

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

Введите домен, выберите тип сайта и нужные функции, чтобы получить готовую конфигурацию nginx. Поддерживаются reverse proxy для Node.js, Python и Java, статические сайты, SPA на React или Vue и PHP, а также редиректы, WebSocket, gzip и кэширование.

Работает в браузере — введённые данные никуда не загружаются

HTTPS
Дополнительно

0 оставляет значение nginx по умолчанию — 1 МБ.

Сначала получите сертификат, например: certbot certonly --webroot -w /var/www/letsencrypt -d example.com -d www.example.com. Затем выполните nginx -t и перезагрузите nginx.

Как пользоваться

  1. Введите домен и выберите тип сайта — адрес upstream для reverse proxy или корень сайта для остальных вариантов.
  2. При необходимости включите HTTPS, HTTP/2, HSTS, редирект www, gzip, кэширование и заголовки безопасности.
  3. Скопируйте или скачайте конфигурацию в /etc/nginx/conf.d/, выполните nginx -t и перезагрузите nginx.

Описание параметров

Reverse proxy
Пересылает запросы на upstream и передаёт Host, X-Real-IP, X-Forwarded-For и X-Forwarded-Proto, чтобы приложение видело реальный IP и схему посетителя.
Одностраничное приложение
Неизвестные пути возвращают index.html, поэтому роутеры в режиме history (React Router, Vue Router) не дают 404 после перезагрузки.
HTTPS
Пути сертификатов соответствуют значениям certbot (Let's Encrypt) по умолчанию, а HTTP получает редирект 301 на HTTPS. HTTP/2 использует форму listen 443 ssl http2, работающую во всех версиях nginx.
HSTS
Сообщает браузерам использовать только HTTPS для домена и всех его поддоменов в течение года. Сначала убедитесь, что каждый поддомен поддерживает HTTPS, иначе он станет недоступен.

Пример: одностраничное приложение с HTTPS и www

Для домена example.com при включённых параметрах «Одностраничное приложение», HTTPS, HTTP/2 и «Также отвечать на www. и перенаправлять на него» (а «Сжатие Gzip», «Заголовки безопасности» и «Долгое кеширование статических файлов» выключены для краткости) генератор записывает три блока server:

  1. Порт 80 отвечает на оба имени, сохраняет доступность /.well-known/acme-challenge/ для продления сертификата и отправляет всё остальное на https://example.com$request_uri с кодом 301.
  2. Порт 443 для www.example.com использует тот же сертификат и возвращает 301 на домен без www.
  3. Порт 443 для example.com обслуживает сайт:
    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }

Оба блока HTTPS указывают на /etc/letsencrypt/live/example.com/fullchain.pem и privkey.pem, разрешают TLS 1.2 и 1.3 и используют общий кеш сеансов размером 10 МБ с тайм-аутом сеанса в один день. Именно строка try_files делает так, что при перезагрузке страницы на клиентском маршруте, например /settings, возвращается приложение, а не ошибка 404.

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

Почему nginx -t предупреждает, что параметр http2 устарел?

Начиная с nginx 1.25.1 предпочтителен отдельный директивный параметр http2 on;, но версия 1.24, поставляемая с Ubuntu 24.04 и другими системами, его не понимает. Форма listen ... http2 работает везде; новые версии лишь выводят предупреждение.

Должен ли сертификат включать www?

Да, если включён редирект www. Запросите оба имени, например certbot -d example.com -d www.example.com.

Загрузка завершается ошибкой 413 Request Entity Too Large?

По умолчанию nginx разрешает тело запроса размером 1 MB. Задайте «Максимальный размер загрузки» нужного размера, например 100.

WebSocket через прокси не работает?

Прокси должен передавать заголовки Upgrade и Connection. Включение поддержки WebSocket добавляет их и увеличивает тайм-аут чтения до часа.

Конфиденциальность

Этот инструмент работает полностью в браузере. Ваши файлы и текст обрабатываются на вашем устройстве и никогда не загружаются на наши серверы.

Похожие инструменты