Как установить и настроить Nginx на Void Linux

Дата публикации: 2026-04-10T11:16:32

⏪ Вернуться домой

⏪ В Gemlog

Void Linux обрабатывает сервисы иначе, чем большинство дистрибутивов. Вместо того, чтобы систематизироваться, он использует runit, что означает, что включение и управление Nginx следует другой схеме, чем то, к чему вы привыкли на Debian или RHEL.

Предварительные условия

Конвенции

Обновите систему

Свежая установка Void Linux требует обновления пакетов до последних доступных версий.

После того, как xbps включен, запустите полное обновление системы.

Система может нуждаться в перезагрузке после обновления.

Установите Nginx Web Server

Установите пакет Nginx из хранилища Void:

Подтвердите установленную версию:

На выходе должна быть показана версия 1.28.3 или новее:

Void Linux использует runit вместо системного. Чтобы включить услугу, вы создаёте симлинк из `/etc/sv/` в `/var/service/`. Runit поднимает его автоматически в течение нескольких секунд.

Дайте ему пару секунд, затем убедитесь, что Nginx работает:

На выходе должна отображаться услуга с PID и временем безотказной работы:

Настройка Nginx

Void Linux поставляется с Nginx с минимальной конфигурацией по умолчанию. Замените его готовой к производству конфигурацией, которая включает в себя правильные настройки рабочего, сжатие gzip и блок сервера, указывающий на пользовательский корень документа.

Void Linux не создает корень документа по умолчанию для Nginx, поэтому его нужно создавать вручную:

Также создайте каталог `conf.d` для виртуальных конфигураций хоста и каталог журнала:

Проверьте синтаксис конфигурации и перезагрузите.

Тестирование страницы Default

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

Испытайте его с помощью curl:

Ответ должен содержать вашу тестовую страницу HTML:

Если вы видите выход HTML, Nginx обслуживает контент из `/srv/www/nginx`, как и ожидалось.

Настройка PHP-FPM

Большинство веб-приложений (WordPress, MediaWiki, Nextcloud) требуют PHP. На Void Linux PHP-FPM работает как отдельный сервис, на который Nginx пересылает запросы.

Установите PHP-FPM вместе с обычно необходимыми расширениями:

PHP-FPM 8.4 на Void Linux прослушивает `127.0.0.1:9000` по умолчанию и работает под `_phpfpm` пользователем и группой. Никаких изменений в конфигурации не требуется для стандартной настройки.

Включите службу PHP-FPM:

Убедитесь, что сервис работает:

Ожидаемый результат:

Расширения установлены, но не включены автоматически. PHP на Void считывает дополнительные файлы конфигурации из `/etc/php8.4/conf.d/`. Создайте этот каталог и включите расширения:

После установки каждому расширению требуется активировать файл `*.ini` в каталоге `conf.d`:

Проверьте, загружаются ли расширения:

Все три модуля, связанные с MySQL:

Перезагрузите Nginx еще раз, чтобы получить новые расширения:

Теперь настройте Nginx для передачи запросов PHP на PHP-FPM. Откройте основной файл конфигурации и добавьте блок местоположения для PHP в блок сервера:

Добавить следующий блок расположения внутри раздела `server { }` после существующего `location /` блока:

Также обновите директиву `index` в блоке сервера, чтобы включить `index.php`:

Проверьте синтаксис конфигурации и перезагрузите.

Создайте страницу информации PHP для проверки работы интеграции:

Проверьте:

Вы должны увидеть выход HTML, содержащий информацию о версии PHP. Если вы получаете пустую страницу или «Файл не найден», дважды проверьте, что `SCRIPT FILENAME` использует `$document root` и что `/srv/www/nginx/info.php` существует.

Удалите страницу с информацией после подтверждения работы PHP. Оставить его открытым - это риск безопасности:

Виртуальные хосты Nginx

Чтобы обслуживать несколько веб-сайтов из одного экземпляра Nginx, используйте отдельные блоки сервера. Основной `nginx.conf` уже включает в себя `/etc/nginx/conf.d/*.conf`, поэтому каждый виртуальный хост получает свой собственный файл в этом каталоге.

Создайте виртуальную конфигурацию хоста для выборочного домена:

Создайте виртуальную конфигурацию хоста для выборочного домена:

Для дополнительных доменов повторите процесс: создайте новый файл `.conf` в `/etc/nginx/conf.d` с соответствующими директивами `server name` и `root`. Каждый сайт остается изолированным в своем собственном файле конфигурации, что делает обслуживание простым

Тестирование и перезагрузка после добавления виртуального хоста:

SSL/TLS с функцией Let’s Encrypt

Установите Certbot и его плагин Nginx.

Получить сертификат. Certbot автоматически изменит блок вашего сервера, чтобы включить HTTPS и настроить перенаправление с HTTP.

Следуйте интерактивным подсказкам. Certbot создает файлы сертификатов под `/etc/letsencrypt/live/example.com/` и вводит в конфигурацию директивы `ssl certificate` и `ssl certificate key`.

Тестирование процесса обновления без внесения изменений.

Если вы предпочитаете ручную конфигурацию SSL без изменения файлов Certbot, сгенерируйте сертификат с помощью флага `certonly` и настройте блок сервера самостоятельно.

Затем обратитесь к сертификату в блоке сервера.

Заголовки безопасности

Заголовки безопасности защищают ваших посетителей от распространенных веб-атак. Добавьте их в блок сервера или в общий файл фрагмента, который вы включаете с каждого виртуального хоста.

После добавления этих заголовков используйте такой инструмент, как `curl -I https://example.com`, чтобы убедиться, что они отправляются правильно. Настройка политики безопасности контента в соответствии с вашим приложением. Чрезмерно ограничительная политика нарушает функциональность; чрезмерно разрешительная политика снижает защиту.

Ограничение ставок и лимиты подключения

Ограничение скорости защищает ваш сервер от грубых атак и оскорбительного трафика. Определите общую зону памяти в блоке http, затем нанесите ее в определенные места.

Применяйте ограничения внутри вашего сервера или блоков местоположения.

Параметр `burst` очередей излишних запросов, а не отклоняет их немедленно. Добавление процессов `nodelay` без задержек разрывает запросы, но по-прежнему считает их против ставки. При заполнении очереди Nginx возвращает статус 503.

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

Журналы доступа и журналы ошибок

Nginx по умолчанию записывает два файла журнала: журнал доступа, записывающий каждый запрос, и журнал ошибок, фиксирующий предупреждения и сбои. Вы можете настроить формат журнала и путь на виртуальный хост.

Применяйте пользовательский формат к конкретному виртуальному хосту.

Уровни журнала ошибок от наименее до наиболее многословных: `emerg`, `alert`, `crit`, `error`, `warning`, `notice`, `info`, `debug`. Для производства `warn` или `error` - это хороший баланс между видимостью и шумом.

Чтобы отключить регистрацию доступа для определенных путей (например, проверки здоровья), используйте этот шаблон.

Настройте вращение журнала с помощью logrotate (уже настроенного пакетом Nginx) или проверьте существующую конфигурацию.

Тюнинг производительности

Конфигурация Nginx по умолчанию работает для легких рабочих нагрузок. При более интенсивном трафике настройки этих параметров в `/etc/nginx/nginx.conf`. Конф делает измеримую разницу.

Проверьте синтаксис конфигурации и перезагрузите.

Завершение

Это руководство охватывало производственную установку Nginx с нуля на Void Linux.

Вы установили последнюю стабильную сборку из официального репозитория Nginx, настроили виртуальные хосты, интегрировали PHP-FPM, автоматизировали сертификаты TLS с Let’s Encrypt, включили HTTP/2 и HTTP/3, затвердели сервер с заголовками безопасности и ограничением скорости, настроили сжатие и производительность.

Nginx - лучший выбор для обратного прокси-сервера, обслуживания статического контента и обработки высокой параллели. Apache имеет больше смысла, если вам нужна поддержка `.htaccess` или вы мигрируете устаревшее приложение, которое зависит от правил mod_rewrite.