erro -> nginx: [emerg] BIO_new_file("/etc/letsencrypt/live/$sslwww/fullchain.pem")
带有 map 或 if 的配置不起作用我该怎么做才能让它们起作用?
不要只找到文件的路径
map $http_host $sslwww {
default "test.com";
~^(?<subdomain>([\w-]+\.)*)?(?<domain>.+)$ $domain;
}
server {
listen 80;
listen [::]:80;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ~^(?<subdomain>([\w-]+\.)*)?(?<domain>.+)$;
#set $sslwww "test.com"; -> not work
#if ($domain != "test.com"){
#set $sslwww $domain;
#}
ssl_certificate "/etc/letsencrypt/live/$sslwww/fullchain.pem";
}
我哪里做错了?
在使用 include conf 但我认为这不太好。还有什么其他解决方案可以加载 1k ssl 证书
答案1
您不能像使用服务器名称或许多其他变量那样使用变量ssl_certificate
。这是因为证书必须随配置一起加载,并且不能像其他变量一样随每个请求动态变化。
要解决该问题,您需要获取具有多个名称或通配符的新 TLS 证书。