nginx ใช้ $ server_name บนพา ธ ssl_certificate


33

ฉันจะใช้ชื่อตัวแปรในเส้นทางไฟล์ได้อย่างไร

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

คำตอบ:


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_certificateและssl_certificate_keyเพิ่มเข้ามาวันนี้! nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate
Andrew Brown

6

คุณสามารถใช้ตัวแปรตั้งแต่nginx 1.15.9 (26 ก.พ. 2019)

โปรดทราบว่าการใช้ตัวแปรแสดงถึงว่าจะมีการโหลดใบรับรองสำหรับแต่ละ handshake SSL และอาจส่งผลเสียต่อประสิทธิภาพการทำงาน

แต่ระวังการเปลี่ยนแปลงด้วยnginx 1.15.12 (16 เม.ย. 2019):

แก้ไขข้อผิดพลาด: ความผิดพลาดของการแบ่งส่วนอาจเกิดขึ้นในกระบวนการของผู้ปฏิบัติงานหากมีการใช้ตัวแปรใน "ssl_certificate" หรือคำสั่ง "ssl_certificate_key" และเปิดใช้งานการเย็บเล่ม OCSP

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.