Nginx - SSL証明書が存在する場合にのみSSLを有効にする 質問する

Nginx - SSL証明書が存在する場合にのみSSLを有効にする 質問する

異なる URL パスにある複数のマイクロサービスに誘導するための nginx リバース プロキシを構築しているときに問題が発生します。

このシステムは完全に Docker ベースであるため、開発と本番で同じ環境が使用されます。SSL 証明書は本番環境でのみ使用可能になるため、SSL をインストールするときに問題が発生しました。そのため、NGINX を SSL で構成すると、SSL 証明書が存在しないため、開発環境が機能しなくなります。

私のconfファイルの関連部分は次のとおりです -

server {
 listen 80;
 listen 443 default_server ssl;

 server_name          atvcap.server.com;
 ssl_certificate      /etc/nginx/certs/atvcap_cabundle.crt;
 ssl_certificate_key  /etc/nginx/certs/atvcap.key;
 ...
}

しかし、開発モードでアプリケーションを実行すると、次のエラーが発生します -

nginx: [emerg] BIO_new_file("/etc/nginx/certs/atvcap_cabundle.crt") が失敗しました (SSL: エラー:02001002:システム ライブラリ:fopen:そのようなファイルまたはディレクトリはありません:fopen('/etc/nginx/certs/atvcap_cabundle.crt','r') エラー:2006D080:BIO ルーチン:BIO_new_file:そのようなファイルはありません)

「/etc/nginx/certs/atvcap_cabundle.crt」が利用可能な場合にのみ SSL をオンにすることは可能ですか?

私は次のようなことを試しました -

if (-f /etc/nginx/certs/atvcap_cabundle.crt) {
  ssl_certificate      /etc/nginx/certs/atvcap_cabundle.crt;
  ssl_certificate_key  /etc/nginx/certs/atvcap.key;
}

しかし、次のようなエラーが発生しました -

nginx: [emerg] /etc/nginx/conf.d/default.conf:7 では「ssl_certificate」ディレクティブは許可されていません

このようなことを実現する方法について何かアイデアをお持ちの方はいらっしゃいますか?

ありがとう

ベストアンサー1

追加ファイルを作成できますssl.confここにSSL設定を記述します:

ssl_certificate      /etc/nginx/certs/atvcap_cabundle.crt;
ssl_certificate_key  /etc/nginx/certs/atvcap.key;

次に、メイン構成から含めます:

server_name          atvcap.server.com;

include /somepath/ssl.conf*;

* 記号を必ず含めてください。開発モードでファイルが存在しない場合でも、これによって問題は発生しません。

おすすめ記事