Laman » bagaimana untuk » Adakah Pelayan Web Hanya Mengadakan Satu Laman Web Setiap?

    Adakah Pelayan Web Hanya Mengadakan Satu Laman Web Setiap?

    Apabila anda mula-mula belajar bagaimana nama domain, alamat IP, pelayan web, dan laman web semua sesuai dan bekerjasama, ia boleh menjadi sedikit mengelirukan atau hangat pada waktu. Bagaimanakah ia berfungsi dengan lancar? Siaran Q & A SuperUser hari ini mempunyai jawapan kepada soalan pembaca yang ingin tahu.

    Sesi Soalan & Jawapan hari ini datang kepada kami dengan ihsan SuperUser-bahagian pembahagian Stack Exchange, kumpulan yang diketuai oleh komuniti laman web Q & A.

    Photo courtesy of Rosmarie Voegtli (Flickr).

    Soalan

    Pembaca SuperUser user3407319 ingin tahu sama ada pelayan web hanya memegang satu laman web masing-masing:

    Berdasarkan apa yang saya faham mengenai DNS dan menghubungkan nama domain dengan alamat IP pelayan web tapak web disimpan, apakah itu bermakna setiap pelayan web hanya boleh memegang satu laman web? Jika pelayan web memegang lebih daripada satu laman web, maka bagaimana semuanya dapat diselesaikan supaya saya dapat mengakses laman web yang saya inginkan tanpa masalah atau campuran?

    Adakah pelayan web hanya memegang satu laman web masing-masing, atau mereka memegang lebih banyak lagi?

    Jawapan

    Penyumbang SuperUser Bob mempunyai jawapan untuk kami:

    Pada dasarnya, penyemak imbas termasuk nama domain dalam permintaan HTTP supaya pelayan web mengetahui domain yang diminta dan boleh bertindak balas sewajarnya.

    Permintaan HTTP

    Inilah cara permintaan HTTP tipikal anda berlaku:

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

    2. Pelayar mengekstrak bahagian host (domain) URL dan menterjemahkannya ke alamat IP (jika perlu) dalam proses yang dikenal sebagai resolusi nama. Terjemahan ini boleh terjadi melalui DNS, tetapi tidak perlu (contohnya, fail hos tempatan pada sistem operasi biasa memintas DNS).

    3. Peramban membuka sambungan TCP ke port tertentu, atau lalai ke port 80 pada alamat IP tersebut.

    4. Pelayar menghantar permintaan HTTP. Untuk HTTP / 1.1, kelihatan seperti ini:

    Pengepala hos adalah standard dan diperlukan dalam HTTP / 1.1. Ia tidak dinyatakan dalam spesifikasi HTTP / 1.0, tetapi sesetengah pelayan menyokongnya.

    Dari sini, pelayan web mempunyai beberapa maklumat yang dapat digunakan untuk menentukan apakah respon tersebut. Ambil perhatian bahawa mungkin ada satu pelayan web yang terikat pada banyak alamat IP.

    • Alamat IP yang diminta, dari soket TCP (alamat IP pelanggan juga tersedia, tetapi ini jarang digunakan, dan kadang-kadang untuk menyekat / menyaring)
    • Pelabuhan yang diminta, dari soket TCP
    • Nama tuan rumah yang diminta, seperti yang dinyatakan dalam pengepala hos oleh penyemak imbas dalam permintaan HTTP
    • Laluan yang diminta
    • Mana-mana tajuk lain (cookies, dll.)

    Seperti yang anda perhatikan, persediaan hosting yang paling biasa pada hari ini meletakkan beberapa laman web pada satu alamat IP: kombinasi pelabuhan, hanya meninggalkan hos untuk membezakan antara laman web.

    Ini dikenali sebagai Host Virtual Berdasarkan Nama di Apache-land, sementara Nginx menyebutnya Nama Server dalam Blok Server, dan IIS lebih suka Server Maya.

    Apa Mengenai HTTPS?

    HTTPS agak berbeza. Segala-galanya adalah sama dengan penubuhan sambungan TCP, tetapi selepas itu terowong TLS yang disulitkan mesti diwujudkan. Matlamatnya adalah untuk tidak membocorkan sebarang maklumat mengenai permintaan tersebut.

    Untuk mengesahkan bahawa pelayan web sebenarnya memiliki domain ini, pelayan web mesti menghantar sijil yang ditandatangani oleh pihak ketiga yang dipercayai. Penyemak imbas kemudiannya akan membandingkan sijil ini dengan domain yang diminta.

    Ini memberi masalah. Bagaimanakah pelayan web tahu sijil tuan rumah / laman web untuk menghantar jika perlu melakukan ini sebelum permintaan HTTP diterima?

    Secara tradisional, ini telah diselesaikan dengan mempunyai alamat IP (atau port) khusus untuk setiap laman web yang memerlukan HTTPS. Jelas sekali, ini menjadi masalah kerana kami kehabisan alamat IPv4.

    Masukkan SNI (Indikasi Nama Pelayan). Pelayar sekarang melayari nama hos semasa rundingan TLS, jadi pelayan web mempunyai maklumat ini cukup awal untuk menghantar sijil yang betul. Di sisi pelayan web, konfigurasi sangat mirip dengan bagaimana tuan rumah maya HTTP dikonfigurasi.

    Kelemahannya ialah nama tuan rumah kini diluluskan sebagai teks biasa sebelum penyulitan, dan pada dasarnya adalah maklumat bocor. Ini biasanya dianggap sebagai perdagangan yang boleh diterima walaupun memandangkan nama hos biasanya terdedah dalam pertanyaan DNS pula.

    Bagaimana Jika Anda Meminta Laman Web oleh Alamat IP Sahaja?

    Apa yang dilakukan oleh pelayan web apabila ia tidak tahu host tertentu yang anda minta bergantung pada pelaksanaan dan konfigurasi pelayan web. Lazimnya terdapat laman web "lalai", "menangkap-semua", atau "jatuh kembali" yang dinyatakan yang akan memberikan maklum balas kepada semua permintaan yang tidak jelas menentukan hos.

    Laman web lalai ini boleh menjadi laman web bebas sendiri (sering menunjukkan mesej ralat), atau ia boleh menjadi salah satu daripada laman web lain pada pelayan web bergantung pada pilihan admin web server admin.


    Mempunyai sesuatu untuk menambah penjelasannya? Bunyi dalam komen. Ingin membaca lebih banyak jawapan dari pengguna Stack Exchange yang berteknologi tinggi? Lihat thread perbincangan penuh di sini.