Как установить и настроить Nginx на Void Linux
Дата публикации: 2026-04-10T11:16:32
Void Linux обрабатывает сервисы иначе, чем большинство дистрибутивов. Вместо того, чтобы систематизироваться, он использует runit, что означает, что включение и управление Nginx следует другой схеме, чем то, к чему вы привыкли на Debian или RHEL.
Предварительные условия
- Сервер под управлением Void Linux.
- Привилегии пользователя: пользователь root или не root с привилегиями sudo.
Конвенции
Обновите систему
Свежая установка 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.