Назад | Перейти на главную страницу

Совместное использование двух SSL-сертификатов с подстановочными и корневыми доменами в nginx (тот же сервер)

Я приобрел подстановочный сертификат и один сертификат для своей доменной структуры:

app.example.com => single
*.app.example.com => wildcard

Оба этих маршрута должны указывать на один и тот же каталог проекта на одном сервере.

Примечание. Служба поддержки RapidSSL сказала, что мне пришлось купить два, поскольку в отличие от классических доменов example.com, мой один - app.example.com, так что подстановочный знак не заботится о моем корне из трех десятичных знаков.

Теперь мне нужно настроить в nginx два разных сертификата. Мой по умолчанию (который работает с моим подстановочным знаком), но не app.example.com, поскольку его сертификат ssl не включен.

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;

    ssl on;
    ssl_certificate /etc/ssl/ssl_certificate.cer;  // this is my wildcard cert
    ssl_certificate_key /etc/ssl/private.key;


    root /var/www/example/public;
    index index.php index.html index.htm;

    server_name .app.example.com;

    location / {
            try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
    }
 }

 // And for redirect:
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name .app.example.com;
    return 301 https://$server_name$request_uri;
}

Как я могу разделить это на два и включить мой новый сертификат для app.example.com и оставить такой шаблон подстановки?

Используйте два server блоки, один для одиночного домена и один для домена с подстановочными знаками. Укажите соответствующий server_name и ssl_certificate директивы.

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name *.app.example.com;    
    ssl_certificate /etc/ssl/ssl_certificate1.cer;
    ssl_certificate_key /etc/ssl/private1.key;

    ...
}
server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name app.example.com;    
    ssl_certificate /etc/ssl/ssl_certificate2.cer;
    ssl_certificate_key /etc/ssl/private2.key;

    ...
}

Видеть этот документ для подробностей.

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