Itu bagian dari protokol HTTP 1.1.
Secara khusus, protokol HTTP 1.1 mencakup tajuk yang disebut "host:" yang menentukan situs web mana pada server tertentu yang berusaha diakses oleh klien.
Jadi, jika snoopy.net dan woodstock.org sama-sama membagikan 192.0.32.10 dan browser Anda mencoba untuk mendapatkan konten dari http://snoopy.net/doghouse
permintaan http spesifik akan terlihat seperti:
GET /doghouse HTTP/1.1
Host: snoopy.net
Jika url yang diinginkan adalah http://woodstock.org/seeds
permintaan akan terlihat seperti
GET /seeds HTTP/1.1
Host: woodstock.org
Dalam kedua kasus, akan ada soket tcp antara komputer Anda dan port 80 dari server. Server akan tahu untuk mendapatkan konten dari /var/www/snoopy.net atau /var/www/woodstock.org/ berdasarkan header Host.
Akan ada tajuk lain untuk kuki dan hal-hal lain seperti jenis peramban dan konten yang diizinkan, tetapi tajuk "Host" secara khusus adalah yang memungkinkan server web untuk mengetahui situs web virtual mana yang diinginkan.
Ada lagi di RFC2616 .
Ini juga mengapa situs https * harus *** memiliki alamat IP mereka sendiri - pertukaran kunci ssl dan verifikasi sertifikat dilakukan sebelum transaksi http, sehingga server http tidak akan tahu untuk memberikan sertifikat untuk "woodstock." org "atau" snoopy.net "ketika menerima koneksi https pada port 443 dari 192.0.32.10.
sunting
** di komentar Grawity menunjukkan bahwa ada ekstensi ke SSL dalam spesifikasi TLS yang memungkinkan server untuk mengetahui situs web mana yang berusaha diakses oleh pengguna, dan bahwa sebagian besar browser web modern memiliki ekstensi ini, jadi harus agak terlalu kuat.
Ada sesuatu yang dikirim oleh semua browser modern beserta permintaannya, yang disebut Header "Host:".
Permintaan sebenarnya yang dikirim firefox untuk halaman ini adalah:
Seperti yang Anda lihat,
bit mengidentifikasi situs web yang dimaksud.Di IIS dan Apache, Anda dapat mengonfigurasi Situs Web Virtual yang hanya menerima permintaan dari kombinasi IP / Host tertentu.
Adapun masalah khusus Anda, Anda harus membaca tentang bagaimana perusahaan hosting khusus Anda ingin Anda meminta konfigurasi.
sumber
Teknik untuk hosting lebih dari satu domain / subdomain pada satu alamat IP / host disebut host virtual . Permintaan http get berisi nama domain untuk permintaan yang memungkinkan server web untuk mencocokkan permintaan dengan domain virtual tertentu.
Jika Anda memiliki beberapa host fisik secara internal dengan hanya satu IP eksternal maka Anda ingin melihat pengaturan proxy terbalik untuk meneruskan permintaan ke mesin / alamat IP internal yang benar.
sumber
Fitur pada server web Anda biasanya disebut 'host virtual'. Setelah Anda menunjuk entri dns untuk menunjuk ke satu alamat IP (seperti yang disebutkan dalam jawaban lain) server kemudian akan server situs yang berbeda tergantung pada apa host yang diminta.
Sejauh menunjuk ke kotak lain pergi. Anda dapat mengonfigurasi pengalihan di sebagian besar server web jika Anda mengharapkan untuk mendapatkan kueri terlebih dahulu. Jika Anda berbicara tentang subdomain maka yang Anda lakukan hanyalah mengarahkan masing-masing sub domain ke alamat ip yang berbeda.
yaitu host.com -> IP 1 lalu www.host.com -> IP 2 dan mail.host.com -> IP 3
Jika Anda menginginkan jawaban yang lebih spesifik, Anda perlu mengatakan perangkat lunak server web apa pada sistem operasi yang Anda jalankan.
Anda mungkin menemukan ServeFault adalah tempat yang lebih baik untuk pertanyaan ini.
sumber
Pendeknya...
Satu - Setel entri DNS untuk berbagai domain Anda ke semua titik ke kotak Anda.
Dua - Seperti yang dijelaskan oleh orang lain, atur server web Anda (Anda tidak mengatakan yang mana) agar cocok dengan nama host yang diminta.
Dengan begitu semua permintaan untuk semua domain Anda pergi ke mesin yang sama dan konfigurasi itu mengambil domain yang diminta dan merutekannya ke folder kanan yang berisi konten situs itu.
sumber
Kedengarannya bagi saya dari pertanyaan Anda seperti Anda memiliki server fisik yang terpisah untuk situs web kedua. Dalam hal ini Anda tidak akan dapat menggunakan alamat IP tunggal untuk dua server. Anda dapat a) mendapatkan alamat IP publik kedua untuk host kedua Anda atau b) mengatur proxy cerdas yang meneruskan permintaan ke server yang berbeda di jaringan internal Anda berdasarkan header host. Saya cukup yakin bahwa b) mungkin tetapi saya tidak tahu bagaimana cara kerjanya, jadi Anda harus bertanya kepada orang lain apakah itu yang ingin Anda lakukan.
sumber
Jika saya membaca pertanyaan Anda dengan benar, Anda memiliki dua komputer berbeda yang berbagi alamat IP melalui NAT (Terjemahan Alamat Jaringan)? Jika demikian, Anda harus memiliki satu situs mendengarkan pada port yang berbeda (bukan 80) - tidak ada cara yang baik saya tahu untuk memiliki router mengirim permintaan ke komputer yang berbeda berdasarkan metadata HTTP "Host". Anda lebih baik hanya mendapatkan alamat IP kedua untuk server kedua Anda.
sumber