nginx benutze $ server_name im ssl_certificate Pfad

33

Wie kann ich einen Variablennamen im Dateipfad verwenden?

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

Antworten:

37

Sie können nicht in jeder Direktive Variablen verwenden. ssl_certificatewird als wörtliche Zeichenfolge behandelt und ist eine der vielen Anweisungen, bei denen Variablen nicht unterstützt werden.

Um unterschiedliche Zertifikate für Hosts anzugeben, müssen Sie diese explizit in einen Serverblock schreiben:

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

Wenn Sie Probleme beim Duplizieren der Konfiguration haben, erstellen Sie Vorlagen und generieren Sie die Nginx-Konfiguration mit diesen Vorlagen. Siehe auch http://nginx.org/en/docs/faq/variables_in_config.html .

Lekensteyn
quelle
6
Unterstützung für Variablen in ssl_certificateund ssl_certificate_keywurde heute hinzugefügt! nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate
Andrew Brown
6

Sie können Variablen seit nginx 1.15.9 (26. Februar 2019) verwenden.

Beachten Sie, dass die Verwendung von Variablen bedeutet, dass für jeden SSL-Handshake ein Zertifikat geladen wird, was sich negativ auf die Leistung auswirken kann

Aber sich bewusst sein Änderungen mit nginx 1.15.12 (16. April 2019):

Bugfix: Ein Segmentierungsfehler kann in einem Worker-Prozess auftreten, wenn Variablen in den Direktiven "ssl_certificate" oder "ssl_certificate_key" verwendet wurden und das OCSP-Heften aktiviert wurde.

Mustafa YILDIRIM
quelle