nginx utilise $ server_name sur le chemin ssl_certificate

33

Comment puis-je utiliser un nom de variable dans le chemin du fichier?

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

Réponses:

37

Vous ne pouvez pas utiliser de variables dans chaque directive. ssl_certificateest traité comme une chaîne littérale et est l'une des nombreuses directives dans lesquelles les variables ne sont pas prises en charge.

Pour spécifier différents certificats pour les hôtes, vous devez l'écrire explicitement dans un bloc de serveur:

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

Si vous ne souhaitez pas dupliquer la configuration, créez des modèles et générez la configuration nginx à l'aide de ces modèles. Voir aussi http://nginx.org/en/docs/faq/variables_in_config.html .

Lekensteyn
la source
6
support pour les variables ssl_certificateet a ssl_certificate_keyété ajouté aujourd'hui! nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate
Andrew Brown
6

Vous pouvez utiliser des variables depuis nginx 1.15.9 (26 févr. 2019)

Notez que l'utilisation de variables implique qu'un certificat sera chargé pour chaque négociation SSL, ce qui peut avoir un impact négatif sur les performances.

Mais soyez conscient des changements avec nginx 1.15.12 (16 avril 2019):

Correction: une erreur de segmentation pouvait survenir dans un processus de travail si des variables étaient utilisées dans les directives "ssl_certificate" ou "ssl_certificate_key" et que l'agrafage OCSP était activé.

Mustafa YILDIRIM
la source