17Aug

Apakah Web Server Hanya Tahan Satu Website Setiap?

Ketika Anda pertama kali mulai belajar bagaimana nama domain, alamat IP, server web, dan situs web semuanya sesuai dan bekerja sama, terkadang terkadang membingungkan atau membingungkan. Bagaimana semuanya diatur agar bekerja dengan sangat lancar? Today's SuperUser Q & Sebuah posting memiliki jawaban atas pertanyaan pembaca yang penasaran.

Pertanyaan Hari Ini &Sesi jawaban datang kepada kami atas izin SuperUser - subdivisi dari Stack Exchange, pengelompokan berbasis komunitas dari Q & A situs web. Foto

milik Rosmarie Voegtli( Flickr).

Pertanyaan

User reader SuperUser user3407319 ingin mengetahui apakah server web hanya menyimpan satu situs web masing-masing:

Berdasarkan apa yang saya pahami tentang DNS dan menghubungkan nama domain dengan alamat IP dari server web, sebuah situs web disimpan, apakah itu berarti masing-masingweb server hanya bisa menampung satu website? Jika server web menahan lebih dari satu situs web, lalu bagaimana semua bisa diselesaikan sehingga saya bisa mengakses situs web yang saya inginkan tanpa masalah atau mix up?

Apakah server web hanya menyimpan satu situs web saja, atau apakah mereka menyimpan lebih banyak?

Jawaban

SuperUser kontributor Bob memiliki jawaban untuk kita:

Pada dasarnya, browser menyertakan nama domain dalam permintaan HTTP sehingga server web mengetahui domain mana yang diminta dan dapat meresponsnya dengan tepat. Permintaan HTTP

Berikut adalah bagaimana permintaan HTTP khas Anda terjadi:

1. Pengguna menyediakan URL, dalam bentuk http: // host: port / path.

2. Browser mengekstrak bagian host( domain) dari URL dan menerjemahkannya ke alamat IP( jika perlu) dalam proses yang dikenal sebagai resolusi nama. Terjemahan ini dapat terjadi melalui DNS, namun tidak perlu( misalnya, file host lokal pada sistem operasi umum bypass DNS).

3. Browser membuka koneksi TCP ke port yang ditentukan, atau default ke port 80 pada alamat IP tersebut.

4. Browser mengirimkan permintaan HTTP.Untuk HTTP / 1.1, tampilannya seperti ini:

Header host standar dan dibutuhkan di HTTP / 1.1.Itu tidak ditentukan dalam spesifikasi HTTP / 1.0, namun beberapa server mendukungnya.

Dari sini, server web memiliki beberapa informasi yang dapat digunakan untuk menentukan respons yang seharusnya. Perhatikan bahwa adalah mungkin bagi satu server web untuk terikat ke beberapa alamat IP.

  • Alamat IP yang diminta, dari soket TCP( alamat IP klien juga tersedia, tapi ini jarang digunakan, dan terkadang untuk memblokir / menyaring)
  • Port yang diminta, dari soket TCP
  • Nama host yang diminta, sepertiyang ditentukan di header host oleh browser dalam permintaan HTTP
  • Jalan yang diminta
  • Header lain( cookies, etc.)

Seperti yang tampaknya Anda perhatikan, setup shared hosting yang paling umum akhir-akhir ini menempatkan beberapa situs web pada satu alamat IP: kombinasi port, hanya menyisakan host untuk membedakan antara situs web.

Ini dikenal sebagai Host Virtual Berbasis Nama di lahan Apache, sementara Nginx memanggil mereka Nama Server di Blok Server, dan IIS lebih menyukai Virtual Server.

Bagaimana dengan HTTPS?HTTPS

sedikit berbeda. Semuanya identik sampai dengan pembentukan koneksi TCP, tapi setelah itu terowongan TLS terenkripsi harus ditetapkan. Tujuannya adalah untuk tidak membocorkan informasi apapun tentang permintaan tersebut.

Untuk memverifikasi bahwa server web sebenarnya memiliki domain ini, server web harus mengirim sertifikat yang ditandatangani oleh pihak ketiga tepercaya. Browser kemudian akan membandingkan sertifikat ini dengan domain yang dimintanya.

Ini menimbulkan masalah. Bagaimana server web mengetahui sertifikat host / website mana yang harus dikirim jika perlu melakukan ini sebelum permintaan HTTP diterima?

Secara tradisional, ini dipecahkan dengan memiliki alamat IP khusus( atau port) untuk setiap situs web yang memerlukan HTTPS.Jelas, ini menjadi bermasalah saat kita kehabisan alamat IPv4.

Masukkan SNI( Indikasi Nama Server).Browser sekarang melewati nama host selama negosiasi TLS, sehingga server web memiliki informasi ini cukup awal untuk mengirim sertifikat yang benar. Di sisi server web, konfigurasi sangat mirip dengan bagaimana host virtual HTTP dikonfigurasi.

Kelemahannya adalah nama host sekarang dilewatkan sebagai teks biasa sebelum enkripsi, dan pada dasarnya adalah informasi yang bocor. Ini biasanya dianggap sebagai trade-off yang dapat diterima meskipun mengingat nama host biasanya terpapar dalam permintaan DNS.

Bagaimana Jika Anda Meminta Website dengan Alamat IP saja?

Apa yang dilakukan server web saat tidak mengetahui host spesifik yang Anda minta bergantung pada implementasi dan konfigurasi server web. Biasanya, ada situs web "default", "catch-all", atau "fall back" yang akan memberikan tanggapan terhadap semua permintaan yang tidak secara eksplisit menentukan host.

Situs web default ini bisa menjadi situs independennya sendiri( sering menampilkan pesan kesalahan), atau bisa juga situs web lain di server web tergantung pada preferensi admin server web.

Punya sesuatu untuk ditambahkan ke penjelasan? Terdengar dalam komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange tech-savvy lainnya? Simak thread diskusi selengkapnya disini.