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

nginx использует $ server_name в пути ssl_certificate

Как я могу использовать имя переменной в пути к файлу?

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.