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:

  1. Mendeteksi $host: Nginx tahu domain yang diakses adalah sekolah.id.

  2. Mendeteksi $request_uri: Nginx tahu user ingin membuka halaman /ujian.

  3. 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

Popular posts from this blog

Apa itu Link Aggregation?

Apa Itu Port Security di Switch Cisco