nginx usa $ server_name no caminho ssl_certificate

33

Como posso usar um nome de variável no caminho do arquivo?

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

Respostas:

37

Você não pode usar variáveis ​​em todas as diretivas. ssl_certificateé tratado como uma sequência literal e é uma das muitas diretivas em que as variáveis ​​não são suportadas.

Para especificar certificados diferentes para hosts, você deve escrevê-lo explicitamente em um bloco de servidor:

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;
    # ...
}
# ...

Se você se sentir desconfortável ao duplicar a configuração, crie modelos e gere a configuração nginx usando esses modelos. Veja também http://nginx.org/en/docs/faq/variables_in_config.html .

Lekensteyn
fonte
6
suporte para variáveis ssl_certificatee ssl_certificate_keyfoi adicionado hoje! nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate
Andrew Brown
6

Você pode usar variáveis ​​desde o nginx 1.15.9 (26 de fevereiro de 2019)

Observe que o uso de variáveis ​​implica que um certificado será carregado para cada handshake SSL e isso pode ter um impacto negativo no desempenho

Mas esteja ciente das alterações com o nginx 1.15.12 (16 de abril de 2019):

Correção de bug: uma falha de segmentação pode ocorrer em um processo de trabalho se as variáveis ​​forem usadas nas diretivas "ssl_certificate" ou "ssl_certificate_key" e o grampeamento OCSP estiver ativado.

Mustafa YILDIRIM
fonte