Mengalihkan semua ke HTTPS kecuali lokasi 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 lokasi 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 lokasi 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.

5 pemikiran pada “Mengalihkan semua ke HTTPS kecuali lokasi tertentu pada Nginx

  1. Hallo mas Chandra,
    maaf mau tanya sedikit, ini ssl letsencrypt nya uda jalan di semua laman kecuali halaman attachment nya..
    kira2 salahnya dmn ya mas?

    trims 😀

Tinggalkan komentar