そのため、次のサーバー定義を使用してSSLサポートnginxサーバーを設定しています。
server {
listen :80;
listen [::]:80;
server_name example.org;
root /foo/bar;
ssl on;
ssl_certificate /path/to/public/certificate;
ssl_certificate_key /path/to/private/key;
...
}
わかります(誤字があればご了承ください)。
とにかく、私が気になったのは、証明書を更新した後にnginxを再起動せずに証明書をインストールする方法がありますか?
たとえば、現在の証明書を指すために/path/to/public/certificate
シンボリックリンクを使用している場合は、新しい(更新された)証明書を指すように変更した場合は、まだ再起動する必要がありますか?他のオプションがありますか?/path/to/private/key
nginx
答え1
必要です。リフレッシュ更新された証明書に正しい有効期限が表示されるようにNginx(両方の違いの説明については、以下のガイドラインとその他の説明を参照してください)リフレッシュそして再起動nginx)。
Nginxをリロードした後、単純なキャッシュを消去してブラウズすると、SSL証明書の更新された有効期限が表示されます。
あるいは、cliを好む場合は、いつでも以前の安定したOpenSSLコマンドを使用できます。
echo | openssl s_client -connect your.domain.com:443 | openssl x509 -noout -dates
これにより、証明書の現在の日付が表示されます。
あなたの場合、ポートは443ではなく80になります(OPは後で問題のポート80が実際に443でなければならないと指摘しましたが、Nginxは現在のポートでない限りHTTPまたはHTTPSに提供するすべてのポートをリッスンします)。使用)。
nginx -s reload
期待通りに動作しないことが多いです。多くのシステム(Debianなど)では/etc/init.d/nginx reload
。
この回答を更新して明確に編集するには:
最新のシステムでは、またはをsystemd
実行することもできます。systemctl reload nginx
service nginx reload
これらすべてreload
方法が異なりますrestart
実際、彼らは以下を送った。SIGHUP
Nginxに既存の接続を終了せずに設定を再ロードするように指示する信号です(これは完全な再起動時に発生し、ほぼ確実にユーザーに影響します)。
何らかの理由でNginxが証明書を再ロードしない場合はrestart
そうすることができますがreload
。
到着再起動Nginx、単に実行するか、systemctl restart nginx
Nginxのないシステムで実行してください。systemd
nginx -s stop && nginx -s start
何らかの理由で他のすべての方法が失敗した場合は、Nginx PIDを終了するといつでも直接使用できますnginx -c /path/to/nginx.conf
。
答え2
SIGHUP
nginxは更新された設定を受け取り、再ロードします。ログファイルを開くとSSL証明書を読むと確認をクリックし、前の構成に従ってワーカープロセスを正常に終了します。
nginxが一部のSSL証明書を読み取れない場合は、以前の構成で実行し続けます。つまり、構成ファイルに対して何が行われても、依然として要求を実行して処理します。破損しても、あなたのウェブサイトは開いたままです。
したがって、nginxに更新された証明書を確認させるためにnginxを再起動する必要はなく、サーバーが数秒以上オフラインになる危険性はありません。これで十分です。
sudo service nginx reload
現在、デフォルトでsystemdを使用するほとんどのディストリビューションでは、次のようにnginxを再ロードすることもできます。
sudo systemctl reload nginx