Jadi saya menyiapkan server nginx dengan SSL yang diaktifkan dengan definisi server seperti:
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;
...
}
Anda mendapatkan ide (maafkan kesalahan ketik apa pun).
Bagaimanapun, yang saya ingin tahu adalah; jika saya memperbarui sertifikat saya, apakah ada cara untuk menginstalnya tanpa harus me-restart nginx?
Misalnya, jika saya menggunakan tautan simbolis dari /path/to/public/certificate
dan /path/to/private/key
, menunjuk ke sertifikat saya saat ini, apakah saya masih perlu memulai kembali nginx
jika saya hanya perlu mengubahnya untuk menunjuk ke sertifikat yang baru (diperbarui)? Apakah ada alternatif?
sumber
nginx reload
dan me-restart Nginx adalah dua hal yang berbeda:reload
tidak me-restart Nginx tetapi hanya mengirimkannya sinyal SIGHUP. Apakah sinyal SIGHUP cukup?echo |
perintah Anda? Jika saya tinggalkan, saya tidak mendapatkan prompt kembali. Saya ingin menerima output untuknotAfter
kemudian membandingkannya dengan tanggal saat ini, dengan spam sendiri beberapa hari sebelum sertifikat berakhir.echo
pipa hanya membuat shell OpenSSL keluar dengan bersih kembali ke Bash dan mengembalikan output seperti biasa. Ini diperlukan agar jalan keluar yang bersih untuk digunakan dalam skrip dan untuk tujuan otomatisasi sepertinya Anda berencana. Saya telah mengimplementasikan banyak skrip seperti yang Anda rencanakan menggunakan fungsi dasar yang sama.Saat menerima
SIGHUP
nginx akan memuat ulang konfigurasi yang diperbarui, verifikasi saat membuka file log dan membaca sertifikat SSL , kemudian dengan anggun mematikan proses pekerja dengan mengandalkan konfigurasi sebelumnya.Jika nginx tidak dapat membaca beberapa sertifikat SSL, saya akan terus berjalan menggunakan konfigurasi yang lebih lama. Jika tidak, itu akan terus berfungsi dan memproses permintaan apa pun yang Anda lakukan pada file konfigurasi Anda. Meskipun rusak, situs web Anda akan tetap terbuka.
Jadi ya, Anda tidak perlu me-restart nginx dan berisiko mematikan server Anda selama lebih dari beberapa detik jika Anda ingin nginx melihat sertifikat yang diperbarui. Seharusnya cukup untuk:
Dalam kebanyakan distribusi saat ini dengan systemd yang digunakan secara default, Anda juga dapat memuat ulang nginx dengan perintah berikut:
sumber
systemd
Anda juga dapat mengeksekusisudo systemctl reload nginx
(yangsudo service nginx reload
disebutkan di atas alias).service nginx restart
. Saya tidak pernah bosan melihat seberapa cepat itu selesai. Namun, jika itu dalam pekerjaan cron, dan saya tidak akan melihatnya, saya lebih suka melakukan semacam memuat ulang untuk menghindari melanggar segala jenis sesi persisten atau operasi tertunda yang mungkin sedang berlangsung.