NGINX サーバーは、http_ssl_module モジュールを使用して SSL 証明書を読み込みます。 NGINX サーバーに証明書をインストールする前に、サーバーにこのモジュールが含まれていることを確認する必要があります。
一般的なエラー
エラー 1: the "ssl" parameter requires ngx_http_ssl_module
原因: NGINX サーバーが http_ssl_module モジュールを使用してコンパイルされていません。
エラー 2: nginx: [emerg] unknown directive “ssl” in /usr/local/nginx/conf/nginx.conf
原因: NGINX サーバーの構成ファイルを変更し、nginx -s reload コマンドを実行した後に上記のエラーが表示された場合、現在のバージョンの NGINX は http_ssl_module モジュールを使用してコンパイルされていません。
エラー 3: ./configure: error: SSL modules require the OpenSSL library
原因: OpenSSL 依存関係ライブラリが見つかりません。
解決策
サーバーに OpenSSL がインストールされているかどうかを確認します。 NGINX サーバーが http_ssl_module モジュールを使用してコンパイルされていない場合は、http_ssl_module モジュールを含めるように NGINX サーバーを再コンパイルします。
例
この例では、64 ビット CentOS 8.0 オペレーティングシステムを実行し、OpenSSL 1.1.1k がインストールされている NGINX 1.14.1 サーバーを使用しています。この例は参照用です。ご使用の NGINX のバージョンに基づいて、互換性のある OpenSSL バージョンを選択することをお勧めします。
現在の NGINX バージョンに
http_ssl_moduleモジュールが含まれているかどうかを確認します。次のコマンドを実行して、NGINX のコンパイル パラメーターを確認します。
nginx -V | grep http_ssl_module出力に
--with-http_ssl_moduleが含まれている場合、http_ssl_moduleモジュールが含まれています。そうでない場合は、http_ssl_moduleモジュールが含まれていないため、手動でインストールする必要があります。
http_ssl_moduleモジュールをインストールします。# CentOS の場合、OpenSSL 1.1.1k バージョンです。Nginx に基づいて互換性のある OpenSSL バージョンを選択してください。 sudo yum install openssl-devel-1.1.1khttp_ssl_moduleモジュールを構成してコンパイルします。# Nginx インストールディレクトリに移動します (ディレクトリの例です。実際の Nginx インストールディレクトリに置き換えてください)。 cd /usr/local/nginx/ # http_ssl_module を構成します。その他のパラメーターはカスタマイズできます。 ./configure --with-http_ssl_module # コンパイルします。 sudo make重要make install コマンドを実行しないでください。実行すると、元の NGINX 構成が上書きされます。
http_ssl_moduleモジュールが正常にインストールされたかどうかを確認します。インストールされていない場合は、手順 2 と 3 を繰り返します。nginx -V | grep http_ssl_moduleNGINX サービスを再起動します。
# Nginx サービスの実行可能ファイルのディレクトリに移動します (ディレクトリの例です。実際のパスを使用してください)。 cd /usr/local/nginx/sbin # 構成ファイルを再読み込みします。 ./nginx -s reload