nginx выдает сертификат на другое доменное имя

Всем здравствуйте, у нас проблема с выдачей верного SSL-сертификата. На Windows стоит HyperV. На нем крутятся две виртуальные машины (ВМ):

  1. BitrixVM 7.5.0 (CentOS centos-release-7-9.2009.1.el7.centos.x86_64) - IP: x.x.x.1
  2. nginx/1.22.0 + Apache/2.4.54 (Ubuntu 20.04) - IP: x.x.x.2

На второй ВМ nginx используется как proxy сервер. Туда попадают все внешние запросы и передаются на ту же самую ВМ или на первую (BitrixVM).

На BitrixVM есть возможность установки сертификатов через готовые команды. И на все тамошние сайты, сделанные с помощью bitrix (bitrix1.example.com, bitrix2.example.com и т.д.), как и сам example.com, все сертификаты работают правильно.

Прилагаю конфиги nginx для проксирования запросов на BitrixVM:

server {
        listen 80 default_server;
        server_name example.com www.example.com;
        access_log /var/log/nginx/example.com-access.log;
        error_log /var/log/nginx/example.com-error.log;
        return 301 https://$host$request_uri;

        location / {
                proxy_pass http://x.x.x.1;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
        }

}

На Ubuntu крутятся сайты, которые сделаны не на битриксе :). Для них мы пока что используем только Apache2 и он прослушивает порт 8080. Вот конфиги nginx для Ubuntu:

server {
        listen 80;

        server_name apache_site1.example.com www.apache_site1.example.com;
        access_log /var/log/nginx/apache_site1.example.com-access.log;
        error_log /var/log/nginx/apache_site1.example.com-error.log;

        listen 443 ssl; # managed by Certbot

        ssl_certificate /etc/letsencrypt/live/apache_site1.example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/apache_site1.example.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

        location / {
                proxy_pass http://x.x.x.2:8080;
                #proxy_ssl_server_name on;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
        }

}

Через http сайты на Ubuntu доступны и работают. Когда пытаемся подключиться через https на сайты, что на Apache (apache_site1.example.com), отображается ошибка, что SSL-сертификат выдан другому доменному имени (example.com). Можете помочь решить проблему? В чем может быть ошибка?

Upd 1. Сертификаты для сайтов, сделанных на битриксе, настроены и установлены инструментами BitrixVM на первой ВМ.

Upd 2. Вот что написали в тех. поддержке Битрикса:

Вам нужно смотреть в сторону вашего балансировщика. На ВМ нет сайта apache_site1.example.com, но запрос приходит на ВМ

/var/log/nginx/access.log

92.50.195.50 - - [12/Aug/2022:19:10:18 +0900 - -] 200 "GET … HTTP/2.0" 28112 "https://apache_site1.example.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.134 YaBrowser/22.7.0.1925 Yowser/2.5 Safari/537.36" "-"

Так как на ВМ такого домена нет, будет открыт конфиг по умолчанию, так как он слушает любой домен

/etc/nginx/bx/site_avaliable/ssl.s1.conf

Этот конфиг отдает сертификат который вы видите в браузере
ssl_certificate /home/bitrix/dehydrated/certs/example.com/fullchain.pem;

Upd 3. SSL-конфиги example.com:

# Default SSL certificate enabled website
server {
    listen      443 default_server http2 ssl;
    server_name _;

    access_log /var/log/nginx/access.log main;
    error_log /var/log/nginx/error.log warn;

    # Enable SSL connection
    server_name_in_redirect     off;

    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    Host            $host:443;
# CERTIFICATE ANSIBLE MANAGED BLOCK
include bx/conf/ssl_options.conf;
ssl_certificate   /home/bitrix/dehydrated/certs/example.com/fullchain.pem;
ssl_certificate_key  /home/bitrix/dehydrated/certs/example.com/privkey.pem;
ssl_trusted_certificate /home/bitrix/dehydrated/certs/example.com/chain.pem;
# CERTIFICATE ANSIBLE MANAGED BLOCK
    proxy_set_header    HTTPS           YES;

    set $proxyserver    "http://127.0.0.1:8888";
    set $docroot                "/home/bitrix/www";

    index index.php;
    root /home/bitrix/www;

# custom options for sites; doesn't changes on update
include bx/site_settings/default/*.conf;
    # Include parameters common to all websites
include bx/conf/letsencrypt-challenge-tokens.conf;
    include bx/conf/bitrix.conf;

    # Include server monitoring API's
    include bx/server_monitor.conf;

}

Ответы (0 шт):