Mengalihkan semua ke HTTPS kecuali tempat tertentu pada Nginx
Masih dalam petualangan saya memahami Let’s Encrypt. Kasus kali ini websitenya sudah pakai HTTPS pakai sertifikat SSL COMODO, jadi migrasi akhirnya. Tapi verifikasi certbot lewat metode webroot authentication selalu berusaha mengakses port HTTP (80). Dimana semua trafiknya sudah terlanjur diredirect ke HTTPS. Otomatis gagal. 🙁
Jadi server Let’s Encrypt akan berusaha memvalidasi dengan mengakses direktori .well-known
pada nama domain anda. Bisa saja kita nonaktifkan redirectnya tapi masa setiap mau renew mau dilakukan setiap 3 bulan? Percuma dong otomatisasi lewat cron. 😀
Jadi solusinya ya semuanya tetap dialihkan ke HTTPS, kecuali satu tempat atau direktori pakai HTTP. Disini saya pakai web server Nginx.
Bagaimana caranya? Tambahkan kode redirect berikut ke dalam konfigurasi virtual hostingnya yang listen
pada port 80
:
location /.well-known/ {
root /var/www/nama_domain.com;
}
Dimana root
itu adalah tempat virtual hosting dari situsnya.
Atau alternatifnya pakai try_files:
location /.well-known {
try_files $uri $uri/ =404;
}
Jangan lupa, ini contohnya memang dari Let’s Encrypt. Tapi sangat bisa sekali anda modifikasi url mana yang diredirect (location
) dan diarahkan kemana (kode dalam blok {}
).
Pilih salah satu dan letakkan diatas kode redirect ke HTTPS. Karena akan diproses secara berurutan.