Mengenal Virtual Host: Menjalankan Banyak Website di Satu Server

Virtual host membuat satu server bisa melayani banyak domain berbeda, masing-masing dengan berkas dan pengaturannya sendiri. Pelajari cara kerja virtual host berbasis nama dan berbasis IP, bagaimana server menentukan situs mana yang dilayani, dan kenapa satu ide ini bikin hosting jadi terjangkau.

Diterbitkan 2 Oktober 202610 menit bacaOleh ACY Partner Indonesia
Virtual host — satu server melayani banyak domain berdasarkan Host header
300 × 250Slot Iklan TersediaPasang iklan Anda di sini

Ada satu pertanyaan yang sering bikin orang bingung pas pertama kali memikirkannya: kalau kamu punya satu server dengan satu alamat IP, gimana caranya dia bisa meng-hosting johndoe.com dan janedoe.com dan belasan website lain yang tidak saling berhubungan sekaligus — masing-masing tampil dan berperilaku seperti pulau kecilnya sendiri? Wajar kalau kamu mengira tiap situs butuh mesinnya sendiri. Padahal tidak. Trik yang bikin ini mungkin namanya virtual host, dan ini salah satu ide penting yang diam-diam menjaga hosting tetap murah dan internet tetap masuk akal secara biaya.

Begitu kamu paham virtual host, beberapa teka-teki langsung terjawab sekaligus: kenapa shared hosting bisa menjejalkan ratusan pelanggan ke satu mesin, kenapa salah ketik di pengaturan DNS-mu kadang malah membawamu ke website orang asing, dan kenapa web server harus membaca sebagian dari tiap permintaan sebelum dia tahu situs mana yang sebenarnya kamu minta. Yuk kita bedah pelan-pelan.

Virtual host itu sebenarnya apa

Virtual host (kadang disingkat vhost) adalah konfigurasi yang memberi tahu satu web server, “kalau ada permintaan masuk untuk domain ini, layani berkas ini dengan pengaturan ini.” Kamu bisa mendefinisikan virtual host sebanyak yang kamu mau di satu server, dan masing-masing akan berperilaku seperti website terpisah — punya document root sendiri (folder tempat berkasnya tinggal), log sendiri, aturan sendiri.

Kata virtual di sini punya peran besar. Sebenarnya cuma ada satu server fisik dan satu program web server yang berjalan, tapi di mata dunia luar kelihatannya seperti banyak situs yang mandiri. Bukan berarti ada yang dipalsukan — tiap situs memang benar-benar dapat jatah konfigurasinya masing-masing. Cuma saja semuanya dilayani oleh software yang sama di mesin yang sama, bergantian berdasarkan siapa yang sedang bertanya.

Kalau kamu sudah baca soal apa itu web server, ini adalah lapisan lanjutannya yang alami: web server itu program yang menunggu permintaan, dan virtual host adalah cara satu program itu mengurus banyak situs sekaligus.

Satu server banyak situs — dan kebalikannya juga ada

Virtual host menyelesaikan masalah “banyak situs di satu server”. Ada juga susunan yang persis kebalikannya: satu situs disebar ke banyak server (untuk trafik yang terlalu besar buat satu mesin). Itu alat yang berbeda — sebuah reverse proxy atau load balancer yang berdiri di depan. Jangan sampai tertukar. Virtual host menjejalkan situs ke dalam; yang satunya menyebar satu situs ke luar.

Masalah yang dipecahkan virtual host

Biar kelihatan kenapa virtual host itu penting, bayangkan dulu alternatifnya. Di masa awal web, model paling sederhana di kepala adalah: satu website = satu server = satu alamat IP. Kalau kamu mau meng-hosting lima situs, ya kamu butuh lima mesin, atau setidaknya lima alamat IP yang terpisah.

Pola itu tidak bisa berkembang. Alamat IP (apalagi jenis IPv4 yang lebih lama) itu sumber daya yang terbatas dan mahal. Server pun jadi banyak menganggur cuma untuk melayani satu website kecil. Dan menghidupkan satu mesin penuh untuk tiap blog mungil bakal bikin hosting jadi luar biasa mahal. Web bakal kelihatan sangat berbeda — mungkin jauh lebih kecil — seandainya tiap domain menuntut perangkat kerasnya sendiri.

Virtual host memutus rantai satu-lawan-satu itu. Sekarang modelnya jadi: satu server, satu IP, banyak situs. Sebuah mesin sederhana bisa dengan nyaman meng-hosting ratusan website bertrafik rendah, masing-masing benar-benar terpisah secara konfigurasi, sambil berbagi perangkat keras yang sama di bawahnya. Inilah seluruh dasar ekonomi dari shared hosting, dan alasan besar kenapa menerbitkan website online cuma butuh beberapa dolar sebulan, bukan ratusan.

Bagaimana server tahu situs mana yang kamu minta

Ini bagian yang cerdik, dan layak kamu lambatkan dulu bacanya. Kalau sepuluh domain semuanya mengarah ke alamat IP yang sama, lalu ada permintaan datang ke IP itu, gimana server tahu kamu mau johndoe.com atau janedoe.com? Alamat IP-nya identik untuk keduanya. Koneksinya pun kelihatan sama persis.

Jawabannya ada di dalam permintaannya sendiri. Saat browser-mu membuat permintaan HTTP, dia menyertakan satu potongan informasi kecil bernama Host header — isinya benar-benar menyebut domain mana yang kamu ketik. Permintaan mentahnya kira-kira begini:

GET /about HTTP/1.1
Host: janedoe.com
User-Agent: ...
Accept: text/html

Baris Host: janedoe.com itulah kunci dari semuanya. Browser sudah tahu domain mana yang sedang kamu kunjungi, jadi dia memberi tahu server secara terang-terangan. Web server membaca header itu, menelusuri daftar virtual host-nya untuk mencari satu yang namanya cocok dengan janedoe.com, lalu melayani berkas dari situs itu. Coba ketik johndoe.com, dan server yang sama akan membaca Host header yang berbeda lalu melayani situs yang sama sekali lain — dari IP yang sama, program yang sama, perangkat keras yang sama.

                         ┌─────────────────────────────┐
   browser minta         │         SATU  SERVER         │
   janedoe.com           │        (satu alamat IP)      │
        │                │                              │
        │  Host: janedoe.com  ┌──────────────────────┐  │
        └───────────────────► │ cocokkan Host header  │  │
                             │ └──────────────────────┘  │
                             │     │                      │
                             │     ├─ johndoe.com  → /sites/john   │
                             │     ├─ janedoe.com  → /sites/jane  ◄─┘ layani ini
                             │     └─ shop.example → /sites/shop
                             └─────────────────────────────┘

Pendekatan ini disebut virtual hosting berbasis nama (name-based), karena server memilih situs berdasarkan nama yang ada di Host header. Beginilah mayoritas besar website di-hosting sekarang.

Inilah kenapa record DNS yang salah membawamu ke situs orang lain

Pernah mengarahkan domain baru ke server hosting lalu malah dapat website orang asing, atau halaman generik “it works!”? Itu virtual hosting berbasis nama yang sedang jujur sama kamu. Permintaan domain-mu sudah sampai ke server, tapi belum ada virtual host yang dikonfigurasi untuk nama itu — jadi server jatuh ke situs default-nya. Solusinya: tambahkan virtual host yang cocok dengan domain-mu. Server-nya tidak rusak; dia cuma belum mengenali namanya.

Berbasis nama vs berbasis IP

Ada dua cara menjalankan virtual host, dan bedanya terletak pada apa yang dipakai server untuk membedakan situs satu dengan yang lain.

Virtual hosting berbasis nama adalah pilihan default zaman sekarang. Semua domain-mu berbagi satu alamat IP, dan server membedakannya murni dari Host header di tiap permintaan, persis seperti yang barusan kita bahas. Cara ini murah (satu IP, situs tak terbatas) dan fleksibel. Satu-satunya syarat adalah client harus mengirim Host header — yang sudah otomatis dilakukan tiap browser selama dua puluh tahun lebih terakhir, jadi praktiknya bukan masalah sama sekali.

Virtual hosting berbasis IP adalah pendekatan yang lebih lama. Di sini tiap situs dapat alamat IP-nya sendiri di mesin yang sama, dan server memutuskan situs mana yang dilayani berdasarkan IP mana yang menerima koneksi — tanpa perlu Host header. Cara ini masih jalan, tapi dia menghabiskan satu alamat IP yang langka per situs, jadi sekarang disimpan untuk kasus khusus saja, bukan hosting sehari-hari.

BERBASIS NAMA                       BERBASIS IP
satu IP, banyak nama                banyak IP, satu nama tiap IP

203.0.113.10 ──┬── johndoe.com      203.0.113.10 ── johndoe.com
               ├── janedoe.com      203.0.113.11 ── janedoe.com
               └── shop.example     203.0.113.12 ── shop.example

server baca Host header             server baca IP tujuan

Untuk hampir semua yang bakal kamu bangun, berbasis nama adalah pilihan yang tepat dan jelas. Berbasis IP bertahan kebanyakan karena alasan warisan lama atau kebutuhan teknis yang sempit.

Trafik terenkripsi menambah satu kerumitan — dan solusinya sudah dibawa sejak awal

Ada jebakan halus pada koneksi aman (HTTPS). Host header itu tinggal di dalam permintaan yang terenkripsi, padahal server harus menyiapkan enkripsi lebih dulu sebelum bisa membaca apa pun di dalamnya — masalah ayam-dan-telur. Lalu gimana server tahu sertifikat situs mana yang harus dia tunjukkan? Jawabannya SNI (Server Name Indication): saat handshake awal, client mengumumkan nama domain secara terbuka, sebelum enkripsi dimulai, supaya server bisa memilih sertifikat yang tepat untuk virtual host itu. Tiap client dan server modern sudah mendukung SNI, jadi virtual hosting berbasis nama berjalan mulus di atas HTTPS sekarang. Kamu biasanya cuma berkenalan dengan nama “SNI” saat ada yang bermasalah seputar sertifikat.

Apa saja yang ada di dalam satu virtual host

Menyebut virtual host sebagai “pengaturan sebuah website” itu memang benar, tapi masih kabur, jadi ayo kita buat konkret. Definisi virtual host yang umum biasanya menetapkan hal-hal seperti:

  • Nama domain yang dia layani — misalnya janedoe.com dan mungkin www.janedoe.com. Inilah nama yang dicocokkan server dengan Host header.
  • Document root — folder di disk tempat berkas situs ini tinggal, seperti /sites/jane. Permintaan untuk domain ini cuma akan membaca dari sini, dan itulah yang menjaga tiap situs tetap terpisah satu sama lain.
  • Logging — log akses dan log error-nya sendiri, supaya kamu bisa melihat trafik dan masalah tiap situs secara terpisah, bukan satu log raksasa yang kusut campur aduk.
  • Perilaku khusus per situs — redirect, security header, sertifikat mana yang dipakai untuk HTTPS, halaman error, dan seterusnya. Tiap situs bisa disetel secara mandiri.

Secara konsep, satu virtual host pada dasarnya menyusut jadi blok konfigurasi kecil yang bacaannya hampir seperti label:

situs: janedoe.com
  layani berkas dari: /sites/jane
  log akses:          /logs/jane-access.log
  pakai sertifikat:   janedoe.com

Tumpuk beberapa blok semacam itu di konfigurasi satu server, dan jadilah sebuah mesin yang diam-diam menjalankan banyak situs mandiri. Tambah satu blok lagi, muat ulang konfigurasinya, dan situs baru langsung hidup — tanpa perangkat keras tambahan, tanpa IP baru.

Tetap netral vendor di kepalamu

Tiap program web server menuliskan virtual host dengan cara yang berbeda — format berkas dan kata kuncinya beda-beda dari satu ke yang lain. Tapi konsepnya universal di semua: cocokkan Host header yang masuk (atau IP tujuan) ke situs yang sudah dikonfigurasi, lalu layani berkas situs itu dengan pengaturan situs itu. Pahami idenya sekali, dan dia berlaku di mana-mana; sintaks spesifiknya cuma detail yang tinggal kamu cari pas dibutuhkan.

Di mana posisi virtual host dalam gambaran besar

Virtual host jarang bekerja sendirian — dia satu lapisan dalam tumpukan yang mengantar permintaan dari browser pengunjung sampai ke berkas yang benar. Layak kamu lihat bagaimana potongan-potongannya saling terhubung.

Semuanya berawal dari DNS: sebuah nama domain diterjemahkan menjadi alamat IP, dan itulah cara browser tahu ke mana harus mengirim permintaannya sejak awal. Beberapa domain bisa mengarah ke IP yang sama — justru itulah yang bikin virtual hosting berbasis nama mungkin sama sekali. Permintaan berjalan ke IP itu, web server membaca Host header, virtual host yang cocok dipilih, dan akhirnya berkas yang benar (atau program yang benar) menangani jawabannya.

Pada susunan yang lebih besar, kamu sering bakal melihat sebuah reverse proxy berdiri di depan untuk menangani HTTPS dan mengarahkan permintaan, dengan virtual host tertata di belakangnya — tapi tugas intinya tidak pernah berubah: pakai nama yang diminta untuk menentukan situs mana yang menjawab. Entah kamu di shared hosting seharga satu dolar atau di platform multi-server yang serius, langkah pencocokan yang sama itu terjadi di tiap permintaan.

Penutup

Seluruh idenya dalam satu tempat:

  • Virtual host membuat satu web server bisa berlaku seperti banyak website mandiri, masing-masing dengan berkas, log, dan pengaturannya sendiri — semua di satu mesin dan (biasanya) satu IP.
  • Dia ada untuk memecahkan masalah skala: tanpanya, tiap situs butuh server atau IP-nya sendiri, yang bikin hosting jauh lebih mahal dan web jauh lebih kecil.
  • Virtual hosting berbasis nama — default zaman sekarang — membedakan situs lewat Host header yang dikirim browser di tiap permintaan. Server mencocokkan nama itu dengan situs yang sudah dikonfigurasi.
  • Virtual hosting berbasis IP adalah alternatif lama: satu IP khusus per situs, tanpa Host header. Masih jalan, tapi memboroskan IP yang langka, jadi langka dipakai sekarang.
  • SNI adalah tambahan kecil yang bikin virtual hosting berbasis nama bisa jalan di atas HTTPS terenkripsi, dengan mengumumkan domain saat handshake agar sertifikat yang benar yang dilayani.
  • Konsepnya netral vendor: cocokkan nama yang diminta (atau IP) ke sebuah situs, lalu layani isi situs itu. Cuma sintaks konfigurasinya yang beda antar web server.

Berikutnya, ada baiknya kita lihat bagaimana koneksi terenkripsi itu sebenarnya disiapkan sejak awal — sertifikat itu sebenarnya membuktikan apa, dan bagaimana SSL/TLS mengubah HTTP biasa menjadi HTTPS — karena itulah lapisan yang duduk tepat di atas semua yang sudah kita bahas di sini.

Tag:serverweb-servervirtual-hosthostingpemula
728 × 90Slot Iklan TersediaPasang iklan Anda di sini

Artikel Terkait

Lihat Semua Artikel

Artikel yang Mungkin Kamu Suka

SSL dan enkripsi at rest — data terlindungi saat berjalan dan saat tersimpan di disk
Server / Keamanan Server

SSL dan Enkripsi at Rest: Melindungi Data Saat Berjalan dan Saat Tersimpan

Enkripsi melindungi data di dua tempat: saat data lewat di jaringan (in transit) dan saat data nganggur di disk (at rest). Pahami bedanya, kenapa kamu butuh keduanya, bagaimana TLS, enkripsi disk, dan pengelolaan kunci sebenarnya saling melengkapi, plus kesalahan praktis yang sering bikin sia-sia.

9 Nov 202612 menit baca
Mengamankan port dan service — menutup pintu di server yang tidak kamu pakai
Server / Keamanan Server

Mengamankan Port dan Service: Menutup Pintu yang Tidak Kamu Pakai

Setiap port yang terbuka di server adalah satu pintu yang bisa dicoba orang lain. Pahami port dan service itu sebenarnya apa, kenapa service yang terekspos jadi risiko terbesarmu, dan kebiasaan sederhana menutup semua yang tidak kamu butuhkan — dijelaskan dari nol.

8 Nov 202610 menit baca
Prinsip least privilege — memberi hanya akses minimum yang dibutuhkan tiap user dan proses
Server / Keamanan Server

Prinsip Least Privilege: Beri Setiap Hal Hanya Akses yang Benar-Benar Dibutuhkan

Least privilege adalah aturan diam-diam di balik hampir semua setup keamanan yang solid: setiap user, proses, dan kunci hanya dapat akses minimum untuk menjalankan tugasnya, tidak lebih.

7 Nov 202612 menit baca
Fail2ban dan dasar intrusi — mengawasi log dan mem-banned otomatis pelaku yang menggedor berulang kali
Server / Keamanan Server

Fail2ban dan Dasar Intrusi: Mem-banned Otomatis Bot yang Terus Menggedor Server-mu

Penyerang tidak berhenti setelah sekali salah tebak — mereka terus menggedor, ribuan kali sehari. Pahami seperti apa sebenarnya percobaan intrusi, apa yang dikerjakan fail2ban, bagaimana ia mengawasi log dan mem-banned pelaku otomatis, dan cara menyetelnya dengan masuk akal tanpa mengunci dirimu.

6 Nov 202612 menit baca
Menjaga software tetap update — menutup lubang keamanan yang sudah diketahui sebelum penyerang memakainya
Server / Keamanan Server

Menjaga Software Tetap Update: Kebiasaan Membosankan yang Mencegah Sebagian Besar Pembobolan Server

Kebanyakan server tidak dibobol lewat serangan baru yang canggih — tapi lewat lubang lama yang sudah diketahui, yang sebenarnya cukup ditutup dengan update. Pelajari kenapa update itu penting, apa saja yang harus di-update, cara melakukannya dengan aman tanpa merusak apa pun, dan cara.

5 Nov 20269 menit baca
Konfigurasi firewall — aturan default-deny yang hanya membuka port yang kamu butuhkan
Server / Keamanan Server

Konfigurasi Firewall: Menyusun Aturan Default-Deny Tanpa Mengunci Diri Sendiri

Tahu apa itu firewall dan benar-benar mengonfigurasinya dengan rapi adalah dua keterampilan berbeda. Pelajari cara menyusun aturan default-deny, mengurutkan aturan dengan benar, membuka akses sendiri lebih dulu, menangani IPv6 dan security group cloud, lalu mengujinya sebelum dipakai — panduan.

4 Nov 202614 menit baca