Skip to content

Nginx. Виртуальные хосты в режиме эксперта

Статья — продолжение Nginx. Работа с виртуальными хостами. Если вы только настраиваете первый сайт — начните оттуда: создание хоста в режиме конструктора покрывает большинство случаев. Сюда переходите, когда нужны директивы, которых нет в форме: кастомный try_files, проксирование, специфичные параметры FastCGI, rate-limiting. Здесь — как открыть режим эксперта, как переключаться между режимами без потери настроек, разбор стартового шаблона и подключение PHP-FPM вручную.

Когда нужен режим эксперта

Режим эксперта нужен, когда стандартной формы не хватает. Типовые случаи:

  • кастомный try_files — например, для SPA с try_files $uri $uri/ /index.html; или WordPress с try_files $uri $uri/ /index.php?$args;;
  • нестандартные access_log / error_log — свой формат, путь или отключение логов;
  • proxy_pass на upstream-сервис с тонкой настройкой заголовков и таймаутов;
  • дополнительные fastcgi_param поверх стандартного PHP-FPM-блока;
  • rate-limiting, кеш, gzip-настройки;
  • директивы if, map, set.

Для типовых сайтов — статика, WordPress на готовом стеке, базовый reverse-proxy — режим эксперта не нужен. Используйте режим конструктора.

Открытие режима эксперта

  1. В боковом меню раздела Nginx нажмите «Создать виртуальный хост».
  2. Откроется страница создания в режиме конструктора. В нижней панели нажмите «В режим эксперта».
  3. Появится диалог «Переключение в режим эксперта». Нажмите «Продолжить».
  4. Откроется редактор исходного конфига с подсветкой синтаксиса и стартовым шаблоном.
  5. Заполните поле «Доменное имя» над редактором — это имя виртуального хоста, по нему панель сохраняет конфигурацию. Адаптируйте шаблон под свой сайт.
  6. Нажмите «Создать».

⚠️ Переключение режимов в форме создания

Возврат в конструктор — по кнопке «В режим конструктора» в той же нижней панели. В форме создания работает так:

  • При первом переходе в эксперт открывается стартовый шаблон (см. ниже).
  • При обратном переключении в конструктор поля формы возвращаются — введённые в конструкторе значения сохраняются.
  • При повторном переходе в эксперт промежуточный черновик не сохраняется и перезаписывается тем же стартовым шаблоном.

Если вы редактировали исходный конфиг в эксперте, переключились в конструктор и вернулись назад — правки потеряются. Сохраните конфиг кнопкой «Создать» до переключения, либо скопируйте текст в сторонний редактор.

Стартовый шаблон

nginx
# This configuration file is automatically generated by BeAdmin.
# You can modify it according to your needs.

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/public;
    index index.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }


    access_log /var/log/nginx/example.access.log;
    error_log  /var/log/nginx/example.error.log;
}

Что делает каждая директива:

  • listen 80; — порт. Для HTTPS поменяйте на 443 ssl; и добавьте ssl_certificate и ssl_certificate_key. В режиме эксперта панель не выпускает сертификат автоматически при сохранении хоста — выпустите его вручную после создания, как описано в статье Выпуск SSL-сертификата.
  • server_name example.com www.example.com; — домены, на которые отвечает блок. Связан с полем «Доменное имя» над редактором (см. ниже).
  • root /var/www/example.com/public; — корень файлов сайта. Замените example.com на свой домен. Каталог должен существовать и быть доступным пользователю nginx, иначе сайт ответит 403 или 500.
  • index index.php index.html; — файлы по умолчанию для запроса каталога. Порядок важен: для PHP-сайта первым указывайте index.php.
  • location / { try_files $uri $uri/ =404; } — стандартная схема: ищем файл по точному пути, затем каталог, иначе 404. Для SPA замените =404 на /index.html. Для WordPress — на /index.php?$args.
  • access_log и error_log — пути к логам. Удобно держать их в /var/log/nginx/<домен>.access.log и /var/log/nginx/<домен>.error.log — так настроены логи, которые показывает модуль Nginx в панели.

⚠️ Подстановка домена в server_name

Когда поле «Доменное имя» становится непустым в первый раз после открытия редактора в форме создания, панель один раз подставляет в server_name стартового шаблона значение <домен> www.<домен> — например, example.com www.example.com. После этого поле «Доменное имя» и строка server_name не синхронизируются: управляйте server_name вручную в редакторе. На странице существующего хоста подстановка не выполняется.

⚠️ Валидация server_name при сохранении

При нажатии «Создать» панель проверяет, что каждое значение в server_name оканчивается на то, что введено в поле «Доменное имя». Если в поле — example.com, то example.com, www.example.com, api.example.com валидны, а api.other.com — нет, и сохранить хост не получится.

Подключение PHP через PHP-FPM

В стартовом шаблоне PHP не подключён: index.php есть в директиве index, но без обработчика .php сервер вернёт исходник как обычный текст. Чтобы сайт исполнял PHP-скрипты, нужен блок location ~ \.php$ { ... } с передачей запросов в PHP-FPM-сокет.

Модуль PHP в BeAdmin поддерживает несколько версий параллельно. Каждая создаёт свой сокет /var/run/php/php<версия>-fpm.sock — например, php8.3-fpm.sock. Версию для конкретного сайта посмотрите в модуле PHP и подставьте в fastcgi_pass.

В стандартной установке через BeAdmin Nginx ставится из официального репозитория nginx.org. Готового фрагмента /etc/nginx/snippets/fastcgi-php.conf в нём нет — он поставляется только в пакетах nginx-full и nginx-extras из родных репозиториев Debian и Ubuntu. Поэтому рекомендуемый вариант — прописать параметры FastCGI явно:

nginx
location ~ \.php$ {
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}

Если на сервере Nginx установлен из дистрибутивных пакетов и стандартный фрагмент присутствует — можно подключить готовый:

nginx
location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}

Сохранение и применение

После нажатия «Создать»:

  • BeAdmin сохраняет конфиг и активирует виртуальный хост.
  • Если файлы сайта уже лежат в каталоге root — сайт сразу доступен.
  • Перед активацией панель проверяет конфиг командой nginx -t. При синтаксической ошибке или неизвестной директиве хост не создаётся, и панель показывает уведомление: «Не удалось создать виртуальный хост из-за ошибки в конфигурации. Дополнительная информация доступна в логах.» Конкретные строки ошибки nginx -t смотрите в системных логах модуля Nginx, исправьте конфиг и нажмите «Создать» повторно.

Управление существующим хостом

  • Чтобы открыть исходный конфиг существующего хоста, на его странице нажмите в нижней панели «В режим эксперта». Возврат — по кнопке «В режим конструктора».
  • Конфиги двух режимов хранятся по-разному: конфиг конструктора — это структурированный набор полей формы в БД панели, конфиг режима эксперта — исходный файл на диске. При переключении из режима эксперта в конструктор панель сохраняет текущий исходный файл во внутренний бэкап, а конструктор показывает свой последний сохранённый набор полей.
  • Промежуточный черновик в режиме эксперта панель не помнит: каждый возврат в эксперт подтягивает актуальный конфиг с сервера. Если вы редактировали исходный конфиг, переключились в конструктор и вернулись назад, не нажав «Сохранить», — правки потеряются, в редакторе откроется последняя сохранённая на сервере версия.
  • Удалить хост можно из бокового меню — иконкой корзины рядом с его именем. Удаляются файл конфигурации виртуального хоста и его логи; файлы сайта в каталоге root и SSL-сертификаты остаются на сервере.

Полезные ссылки

BeAdmin © 2025. Все права защищены.