NGINX
#nginx#ssl#letsencrypt#bitrixvm#centos

Nginx в BitrixVM: SSL-конфиг для Let's Encrypt

Минимальный конфиг nginx для использования сертификатов Let's Encrypt в BitrixVM. Файлы в /etc/nginx/bx/conf/ и подключение через include в site_avaliable.

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

  1. Создай файл /etc/nginx/bx/conf/ssl.ТВОЙ_ДОМЕН.conf с путями к fullchain.pem и privkey.pem.
  2. В bx_ext_ssl_ТВОЙ_ДОМЕН.conf в блоке server (listen 443 ssl) добавь: include bx/conf/ssl.ТВОЙ_ДОМЕН.conf;
  3. Проверка: 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-структуре.

Проверка

  1. Синтаксис конфига — после создания или правки файлов:
sudo nginx -t

Ожидаем: «syntax is ok», «test is successful». При ошибке пути к сертификату (файл не найден) nginx -t покажет предупреждение или ошибку.

  1. Применение конфига — без обрыва активных соединений:
sudo systemctl reload nginx

Используйте reload, а не restart.

  1. Доступность сайта по HTTPS — откройте в браузере или проверьте заголовки:
curl -I https://example.com/

Ожидаем ответ 200 (или 301/302 при редиректе). В браузере соединение должно быть защищённым (сертификат Let’s Encrypt). При ошибке 497 проверьте, что в конфиге 443 есть error_page 497 https://$host$request_uri; и что запрос идёт по HTTPS.

  1. Пути к сертификатам — сертификаты после выпуска через 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 по документации дистрибутива.