> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
Saya mengetik 93.184.216.34
alih-alih http://example.com
di Chrome. Itu tidak memuat situs web. Mengapa?
ip
google-chrome
PerrierCitror
sumber
sumber
Jawaban:
Karena
Host
header HTTP yang tepat sering diperlukan untuk benar-benar mendapatkan situs yang dimaksud.Sangat umum untuk meng-host beberapa situs web pada alamat IP yang sama dan membedakannya berdasarkan
Host
header HTTP yang ditentukan oleh klien (serta nilai TLS SNI saat ini dalam kasus HTTPS).Yaitu, ketika Anda masuk
http://example.com
ke browser AndaHost
tajuk ituexample.com
, tapi itu tidak terjadi ketika Anda memasukkan93.184.216.34
. Anda mencapai server web yang sama dalam kedua kasus, tetapi Anda menerima respons berbeda (dalam kasus khusus ini 200 vs 404).sumber
Host
dilakukan dan untuk apa server web menggunakannya? Agak sulit untuk mencari online karena kata itu sangat kelebihan.curl -H "Host: example.com" http://93.184.216.34/
atau sesuatu seperti itu.example.com example.net example.org example.edu
pada alamat yang sama, itulah sebabnya mengapa benar-benar membutuhkan nama di header Host.Karena biasanya server web menggunakan teknologi "server virtual" dan dapat menjawab permintaan HTTP Anda persis dengan nama domain yang Anda minta, tetapi bukan alamat IP dari server web. Berkat menyembunyikan lebih dari satu nama domain pada satu alamat IP.
Misalnya, server web Apache dapat menanggapi permintaan HTTP Anda dengan alamat IP menggunakan bagian ini:
atau jika Tidak Ada VirtualHost digunakan dalam konfigurasi sama sekali.
Fitur VirtualHost di Apache diperkenalkan pada tahun 1996.
sumber
Di Apache , Anda dapat meng-host banyak situs web hanya dengan menggunakan satu alamat IP. Ini disebut hosting virtual. Begitulah cara subdomain dapat dibuat, bahkan domain mandiri. Ini dilakukan dengan menyiapkan file konfigurasi Apache yang berisi arahan VirtualHost untuk setiap domain / subdomain.
Contoh server HTTP yang memiliki dua host virtual, example1.com dan example2.com dapat terlihat seperti ini (definisi alamat IP):
Bisa juga terlihat seperti ini (definisi berbasis nama):
Dalam kedua kasus, dua catatan host virtual dibuat secara internal dalam memori dan digunakan oleh Apache untuk membandingkan terhadap ketika permintaan URI tiba.
Ketika pengguna mengetikkan alamat IP melalui agen pengguna, host virtual pertama yang tercantum dalam file konfigurasi digunakan sebagai domain utama (yaitu dalam hal ini example1.com).
Saat pengguna mengetikkan nama domain, permintaan dikirim ke jaringan DNS Internet publik (ICANN) yang menyediakan alamat IP yang terkait dengannya. Anda mendaftarkan keduanya melalui pendaftar ICANN (seperti GoDaddy). Anda harus memiliki keduanya dengan benar dan memberikan waktu sebelum propagasi menguasai semua server DNS di jaringan ICANN. Hari-hari ini bisa memakan waktu hingga 24 jam.
Ketika permintaan dialihkan ke server HTTP Apache Anda, alamat IP dan nama domain dicocokkan dengan daftar catatan VirtualHost internal. Ketika satu ditemukan, root dokumen digunakan untuk membentuk path sistem file lengkap ke sumber daya objek untuk kembali ke agen pengguna. Jika tidak, HTTP 404 dikirim beserta dokumen kesalahan apa pun yang terkait dengannya.
sumber
Saya suka menggunakan terminologi "rumah".
Anda dapat dengan mudah mengirim surat ke rumah tanpa nama dan akan tiba di rumah.
Jika Anda memasukkan nama orang tersebut di atasnya, maka Anda mengirim ke penerima yang dimaksud.
Tujuannya sama tetapi cara penanganannya ketika sampai di rumah berbeda.
Saat Anda menentukan situs, yaitu www.example.com, maka server tahu bagaimana menangani permintaan dan host mana yang dimaksudkan untuknya dan situs mana yang akan dilayani kembali.
sumber
Istilah kunci untuk mencari adalah "hosting virtual berbasis nama".
Orang ingin mengalokasikan beberapa nama host ke server web yang sama dan menyajikan konten yang berbeda untuk setiap nama host. Ini dikenal sebagai hosting virtual (jangan bingung dengan konsep mesin virtual yang lebih baru).
Awalnya virtual hosting dilakukan dengan mengalokasikan beberapa alamat IP ke server, server kemudian dapat mengirim konten yang berbeda berdasarkan alamat IP yang digunakan, tetapi ini dianggap boros.
Oleh karena itu header "host" diperkenalkan, awalnya sebagai ekstensi tetapi kemudian membuat bagian wajib dari spesifikasi http 1.1 pada tahun 1997. Header ini menentukan hostname yang diminta klien. Server kemudian dapat menyajikan konten yang berbeda berdasarkan nilai header.
sumber
Untuk menekan biaya server web, banyak server web meng-host beberapa situs web. Mereka melakukan ini dengan menggunakan host virtual, atau Vhosts, di apache2 / nginx / etc. Jadi, jika Anda langsung menuju ke Alamat IP situs web, kemungkinan besar Anda akan mendapatkan layar "Apache berfungsi", atau bahkan mungkin dialihkan ke situs web utama server web.
Vhost melihat alamat situs web yang masuk dan membandingkannya dengan nama ServerName atau ServerAlias dalam file Vhosts yang diaktifkan. Jika salah satunya cocok, situs web tertentu dimuat.
Kecuali situs web memiliki beban besar (jumlah pengunjung unik / tampilan halaman) yang tinggi atau mendorong aplikasi beban tinggi (pikirkan youtube.com, facebook, dll.) Mungkin lebih hemat biaya untuk beroperasi di server bersama. Ini akan membuang-buang uang untuk mendapatkan server khusus (mulai dari $ 60 / bln) hanya untuk menjalankan situs web blog Wordpress. Anda lebih baik mendapatkan platform bersama di server dengan mungkin 200+ situs web di satu server. Biaya akan lebih banyak di area $ 5 / bln.
Alasan lain untuk melakukan ini adalah kurangnya alamat IP. Tidak ada cukup alamat IPv4 yang tersisa. Hanya melalui penggunaan NAT untuk jaringan rumah / bisnis dan penggunaan Vhosts yang tersisa. Bahkan ketika IPv6 menjadi aliran utama, server mungkin akan tetap berpegang pada Vhosts (biaya server).
sumber
Alamat IP khusus mahal, sementara membuat situs web baru di server pada dasarnya gratis.
Apa yang terjadi adalah bahwa perusahaan hosting menyewakan satu alamat IP yang menunjuk ke server fisik, lalu meng-host ribuan situs web pada alamat IP tersebut menggunakan fitur "virtual host"
Berpikirlah seperti PO Box, jika Anda hanya menuliskan alamat kantor pos tetapi tanpa nomor kotak, surat tidak akan dikirimkan.
sumber
Ada banyak jawaban di sini dengan detail teknis, tetapi saya pikir penjelasan tingkat tinggi yang paling sederhana adalah bahwa bahkan jika server web mendengarkan dengan benar lalu lintas http pada alamat IP-nya, server biasanya juga harus dikonfigurasi untuk menjawab untuk domain tertentu nama, dan nama itu harus dalam permintaan yang dikirim oleh klien (yaitu browser web)
Saya katakan "biasanya" karena hampir selalu dilakukan dengan cara ini, tetapi sebenarnya ada metode di mana Anda dapat mengatur server http untuk menjawab jika hanya alamat IP yang digunakan.
sumber
Kita perlu memahami perbedaan antara IP Virtual dan IP Khusus.
Jika situs web memiliki IP khusus (tidak dibagi), maka (misalnya) http://123.456.789.012 akan memunculkan situs web.
Coba ini, yang merupakan alamat IP khusus dari situs yang saya miliki, www.negativeiongenerators.com: http://75.126.128.174 Tapi seperti yang dikatakan orang lain, biasanya itu bukan ide yang baik.
sumber