Nginx в BitrixVM: SSL-конфиг для Let's Encrypt
Минимальный конфиг nginx для использования сертификатов Let's Encrypt в BitrixVM. Файлы в /etc/nginx/bx/conf/ и подключение через include в site_avaliable.
Как использовать
- Создай файл /etc/nginx/bx/conf/ssl.ТВОЙ_ДОМЕН.conf с путями к fullchain.pem и privkey.pem.
- В bx_ext_ssl_ТВОЙ_ДОМЕН.conf в блоке server (listen 443 ssl) добавь: include bx/conf/ssl.ТВОЙ_ДОМЕН.conf;
- Проверка: nginx -t; применение: systemctl reload nginx.
В BitrixVM nginx обслуживает сайты по конфигам из /etc/nginx/bx/site_avaliable/. Чтобы включить HTTPS с сертификатами Let’s Encrypt, нужно указать пути к fullchain.pem и privkey.pem и при необходимости редирект с HTTP на HTTPS. Проблема: в дистрибутиве каталог называется site_avaliable (с опечаткой); SSL-настройки удобно вынести в отдельный файл в /etc/nginx/bx/conf/ и подключать через include. Без правильных путей к сертификату nginx не запустится или отдаст ошибку 502/497. Симптомы: после выпуска certbot сайт по HTTPS не открывается, ошибка 497 (Request sent to HTTPS port over HTTP). Ниже — минимальный конфиг SSL для BitrixVM и проверка по документации nginx.
Решение
Подключение сертификатов Let’s Encrypt в nginx под BitrixVM. Конфигурации сайтов лежат в /etc/nginx/bx/site_avaliable/. SSL выносится в отдельный файл в /etc/nginx/bx/conf/ и подключается через include.
Файл с путями к сертификату
Создаётся файл вида /etc/nginx/bx/conf/ssl.example.com.conf. Замените example.com на свой домен.
# Редирект при обращении по HTTP к порту 443 (ошибка 497)
error_page 497 https://$host$request_uri;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_session_cache shared:SSL:10m;
Подключение в виртуальном хосте
В файле /etc/nginx/bx/site_avaliable/bx_ext_ssl_example.com.conf в блоке server с listen 443 ssl; добавьте одну строку:
server {
listen 443 ssl;
server_name example.com www.example.com;
include bx/conf/ssl.example.com.conf;
# остальные директивы сайта (root, location и т.д.)
}
Путь в include задаётся относительно каталога конфигов nginx (обычно /etc/nginx/), поэтому bx/conf/ssl.example.com.conf указывает на файл в BitrixVM-структуре.
Проверка
- Синтаксис конфига — после создания или правки файлов:
sudo nginx -t
Ожидаем: «syntax is ok», «test is successful». При ошибке пути к сертификату (файл не найден) nginx -t покажет предупреждение или ошибку.
- Применение конфига — без обрыва активных соединений:
sudo systemctl reload nginx
Используйте reload, а не restart.
- Доступность сайта по HTTPS — откройте в браузере или проверьте заголовки:
curl -I https://example.com/
Ожидаем ответ 200 (или 301/302 при редиректе). В браузере соединение должно быть защищённым (сертификат Let’s Encrypt). При ошибке 497 проверьте, что в конфиге 443 есть error_page 497 https://$host$request_uri; и что запрос идёт по HTTPS.
- Пути к сертификатам — сертификаты после выпуска через certbot webroot лежат в
/etc/letsencrypt/live/ДОМЕН/. Имена в ssl.*.conf должны совпадать с этим путём.
Типичные ошибки
- Опечатка в каталоге — в BitrixVM каталог называется
site_avaliable, а неsites-available. Конфиги SSL для расширений — вbx_ext_ssl_*.confв этом каталоге. - Неверный путь в include — путь в
includeсчитается от директивы включения или от корня конфигов. Убедитесь, что файлbx/conf/ssl.example.com.confсуществует относительно того каталога, откуда nginx его подхватывает (часто/etc/nginx/). - Сертификат не найден — до включения конфига выпустите сертификат (certbot certonly —webroot). После продления сертификата достаточно
systemctl reload nginx, перезапуск не обязателен. - HTTP не редиректит на HTTPS — редирект с 80 на 443 настраивается отдельным блоком server (listen 80; return 301 https://$host$request_uri;). В данном сниппете описан только блок 443 и include SSL-файла.
Где применять
- BitrixVM (prod): CentOS/RHEL, nginx из дистрибутива BitrixVM. После выпуска сертификата через certbot webroot и настройки конфига — продление по cron с deploy-hook и reload nginx.
- Один домен на сервер — создайте один ssl.ДОМЕН.conf и подключите его в соответствующем bx_ext_ssl_ДОМЕН.conf.
Связанные сниппеты: Certbot: выпуск сертификата webroot в BitrixVM, Certbot: продление и cron с deploy-hook, Структура каталогов nginx для сайта.
Источники: nginx — Configuring HTTPS servers, структура каталогов BitrixVM по документации дистрибутива.