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;

回答:


37

すべてのディレクティブで変数を使用することはできません。ssl_certificateはリテラル文字列として扱われ、変数がサポートされていない多くのディレクティブの1つです。

ホストに異なる証明書を指定するには、サーバーブロックに明示的に書き込む必要があります。

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
アンドリューブラウン

6

nginx 1.15.9(2019年2月26日)以降の変数を使用できます

変数を使用することは、SSLハンドシェイクごとに証明書がロードされることを意味し、これがパフォーマンスに悪影響を及ぼす可能性があることに注意してください

ただしnginx 1.15.12変更点に注意してください(2019年4月16日):

バグ修正:変数が「ssl_certificate」または「ssl_certificate_key」ディレクティブで使用され、OCSPステープルが有効になっている場合、ワーカープロセスでセグメンテーションエラーが発生する可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.