nginx server_name正则表达式捕获未在ssl_certificate中替换

时间:2018-02-07 20:59:49

标签: regex nginx config

我正在尝试以下方法:

server_name ~^domain\.(?<tld>.*)$;
ssl_certificate /etc/ssl/private/ssl-chain-domain-$tld.pem;

我得到了:

[emerg] 22812#22812:BIO_new_file(“/ etc / ssl / private / ssl-chain-domain- $ tld.pem”)失败(SSL:错误:02001002:系统库:fopen:没有这样的文件或目录:fopen('/ etc / ssl / private / ssl-chain-domain- $ tld.pem','r')错误:2006D080:BIO例程:BIO_new_file:没有这样的文件

显然,不会发生var替换。 1美元也不起作用。

1 个答案:

答案 0 :(得分:0)

请参阅Nginx docs

  

不应将变量用作模板宏。在处理每个请求期间,在运行时评估变量

换句话说:Nginx不会为每个请求单独加载证书,因此不会使用变量。您需要明确地访问您的特定证书路径。

此外,这个问题可能属于Serverfault(但我不知道如何移动它)。