Ответы:
Вы не можете использовать переменные в каждой директиве. ssl_certificate
трактуется как буквенная строка и является одной из многих директив, где переменные не поддерживаются.
Чтобы указать разные сертификаты для хостов, вы должны явно записать их в блоке сервера:
server {
server_name example.com;
ssl_certificate /home/ec2-user/.certificados/example.com.crt;
ssl_certificate_key /home/ec2-user/.certificados/example.com.key;
# ...
}
server {
server_name example.net;
ssl_certificate /home/ec2-user/.certificados/example.net.crt;
ssl_certificate_key /home/ec2-user/.certificados/example.net.key;
# ...
}
# ...
Если вам неудобно дублировать конфигурацию, создайте шаблоны и сгенерируйте конфигурацию nginx, используя эти шаблоны. Смотрите также http://nginx.org/en/docs/faq/variables_in_config.html .
Вы можете использовать переменные начиная с nginx 1.15.9 (26 февраля 2019)
Обратите внимание, что использование переменных подразумевает, что сертификат будет загружен для каждого рукопожатия SSL, и это может отрицательно сказаться на производительности.
Но помните об изменениях в nginx 1.15.12 (16 апреля 2019 г.):
Исправление: ошибка сегментации могла возникать в рабочем процессе, если переменные использовались в директивах "ssl_certificate" или "ssl_certificate_key", и сшивание OCSP было включено.
ssl_certificate
иssl_certificate_key
была добавлена сегодня! nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate