Не уверен, что происходит, но это работает:
ssl_certificate /etc/ssl/tld/$ssl_server_name/ssl.crt;
и этот не срабатывает:
set $cert $ssl_server_name;
ssl_certificate /etc/ssl/tld/$cert/ssl.crt;
Реальный случай таков: мои сертификаты находятся в папке TLD (не спрашивайте):
map $ssl_server_name $tld {
~^(.+\.)*(.+)$ $2;
default $ssl_server_name;
}
Но похоже, что я могу использовать только $ssl_server_name
. Все остальное не работает.
*1 cannot load certificate "/etc/ssl/tld//ssl.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/ssl/tld//ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file) while SSL handshaking, client: 192.168.136.xxx, server: 0.0.0.0:443
nginx -v
nginx version: nginx/1.18.0 (Ubuntu)
решение1
На всякий случай, если кто-то наткнется на это как на первый результат поиска: рабочее решение можно найтиздесь.