Nginx在ssl_certificate路径上使用$ server_name


33

如何在文件路径中使用变量名?

ssl_certificate /home/ec2-user/.certificados/$server_name.crt;
ssl_certificate_key /home/ec2-user/.certificados/$server_name.key;

Answers:


37

您不能在每个指令中使用变量。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


6
在变量支持ssl_certificatessl_certificate_key今天加入! nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate
Andrew Brown

6

nginx 1.15.9起(2019年2月26日),您可以使用变量

请注意,使用变量意味着每次SSL握手都会加载一个证书,这可能会对性能产生负面影响

但是请注意nginx 1.15.12更改(2019年4月16日):

错误修正:如果在“ ssl_certificate”或“ ssl_certificate_key”指令中使用了变量,并且启用了OCSP装订,则可能在工作进程中发生分段错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.