Kenapa Di Redirect Nginx Itu Pakai $host$request_uri Dan Tidak Pakai Domain Langsung
Pengertian
$host$request_uri adalah variabel bawaan pada Nginx yang berfungsi untuk menangkap informasi domain dan path (alamat halaman) yang sedang diakses oleh user. Dalam konfigurasi redirect HTTPS, variabel ini memastikan user diarahkan ke alamat yang persis sama, hanya protokolnya saja yang berubah dari HTTP ke HTTPS.
Konsep
Konsep dasarnya adalah "Dinamis". Alih-alih menulis nama domain secara manual (hardcoded) di konfigurasi Nginx, kita membiarkan server "membaca" domain apa yang sedang diminta oleh browser pengunjung melalui $host, dan melengkapinya dengan lokasi halaman yang spesifik melalui $request_uri.
Cara Kerja
Saat seseorang mengakses http://sekolah.id/ujian, Nginx akan:
Mendeteksi
$host: Nginx tahu domain yang diakses adalahsekolah.id.Mendeteksi
$request_uri: Nginx tahu user ingin membuka halaman/ujian.Menggabungkan: Nginx melakukan redirect (301) ke
https://+sekolah.id+/ujian.
Tujuan
Tujuan utamanya adalah menjaga integritas URL. Kita ingin memastikan pengguna yang tadinya membuka halaman tertentu tidak "dibuang" ke halaman utama (homepage) setelah proses redirect HTTPS terjadi.
Kelebihan & Kekurangan
Kelebihan:
Efisien: Tidak perlu tulis ulang domain untuk setiap file konfigurasi.
Anti-Typo: Mengurangi risiko salah ketik nama domain di file konfigurasi.
Fleksibel: Sangat cocok untuk server yang menghosting banyak domain/subdomain sekaligus.
Kekurangan:
Sedikit lebih sulit dipahami bagi pemula yang baru belajar konfigurasi hardcoded (tulis manual).
Analogi
Bayangkan kamu punya tamu yang mau masuk ke Ruang Ujian di sekolah.
Cara Manual: Kamu cuma bilang, "Silakan masuk ke sekolah." (Tamu bingung, dia harus cari sendiri letak Ruang Ujian).
Cara
$host$request_uri: Kamu bilang, "Silakan masuk ke sekolah, dan ini arah menuju Ruang Ujian-nya." (Tamu langsung sampai di tujuan dengan benar).
Command
Berikut adalah cara menerapkannya di dalam blok server pada konfigurasi Nginx kamu:
server {
listen 80;
server_name namadomain.com;
return 301 https://$host$request_uri;
}
Comments
Post a Comment