При конфигурации NGINX директивы для SSL, такие как `ssl_certificate` и `ssl_certificate_key`, обычно требуют быть заданными прямо в тексте конфигурационного файла и не поддерживают использование переменных напрямую для определения путей к сертификатам. Однако, вы можете использовать шаблоны конфигурации с директивами `include` или использовать wildcard сертификаты для поддержки нескольких поддоменов.
Вот пример использования wildcard сертификата для нескольких поддоменов:
```nginx
server {
listen 443 ssl;
server_name *.example.com;
ssl_certificate /etc/nginx/ssl/wildcard.example.com.pem;
ssl_certificate_key /etc/nginx/ssl/wildcard.example.com.key;
# ...
}
```
Для поддержки нескольких различных доменов с разными сертификатами, сами серверные блоки будут должны быть раздельными, но вы можете уменьшить дублирование используя директиву `include` для общих конфигурационных секций.
Например, создайте конфигурационный файл со стандартной секцией настроек SSL, например `ssl-params.conf`:
```nginx
# содержимое файла ssl-params.conf
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'HIGH:!aNULL:!MD5';
ssl_prefer_server_ciphers on;
#... другие общие SSL настройки...
```
Затем включите этот файл в каждый блок server для разных доменов:
```nginx
# Для domain1.com
server {
listen 443 ssl;
server_name domain1.com;
ssl_certificate /etc/nginx/ssl/domain1.com.pem;
ssl_certificate_key /etc/nginx/ssl/domain1.com.key;
include ssl-params.conf;
# ...
}
# Для domain2.com
server {
listen 443 ssl;
server_name domain2.com;
ssl_certificate /etc/nginx/ssl/domain2.com.pem;
ssl_certificate_key /etc/nginx/ssl/domain2.com.key;
include ssl-params.conf;
# ...
}
```
Этот подход позволяет минимизировать дублирование конфигурационных настроек в файлах NGINX.
Автоматизированное управление множественными доменами и сертификатами также можно осуществить с помощью скриптогенерации файлов конфигурации или с использованием инструментов управления конфигурацией, таких как Ansible, Puppet или Chef.