Как я могу использовать имя переменной в пути к файлу?
ssl_certificate /home/ec2-user/.certificados/$server_name.crt;
ssl_certificate_key /home/ec2-user/.certificados/$server_name.key;
Вы не можете использовать переменные в каждой директиве. 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.