Bu Yazımızda, eyni IP-dən bir neçə veb-sayta xidmət göstərmək üçün “virtual hosting” üsulundan istifadə olunur.
Bu üsul, bir serverin eyni IP ünvanında bir neçə veb-saytın yerləşməsinə imkan tanıyır. Aşağıda bunu necə həyata keçirə biləcəyiniz haqqında qısa məlumat verilir:Virtual Hostinq veb-serverlər (Apache, Nginx və s.) tərəfindən təmin edilən və veb səhifənin təqdimatında daha az server resursu (prosessor, yaddaş, IP və s.) ilə daha çox veb-saytların təqdim edilməsi üçün istifadə edilən üsuldur. Veb saytları bir serverdə toplamaqla texniki xidmət xərcləri azalır.
Virtual Hosting metodu sayəsində bir çox veb saytlar bir IP ilə eyni serverdə xidmət göstərə bilər. Veb serverlər eyni IP və porta (80) gələn sorğuları ayırd etmək üçün aşağıda göstərilən HTTP paketindəki Host başlıq parametrinə baxır.
Serverdə yerləşdirilən bütün veb-saytlar üçün DNS yönləndirmə eyni IP-yə edilir. Beləliklə, müştərilər FQDN – Tam Kvalifikasiyalı Domen Adlarından istifadə edərək DNS-dən IP-ləri həll etməklə veb serverə çatırlar. Veb server sorğunu Host başlığından müvafiq serverə yönləndirir.
Biz onu həmişə burada bir veb server kimi qeyd etsək də, praktikada və geniş miqyasda, yük balanslaşdırıcıları istəkləri qarşılayır və yük distribyutorları Host başlığına baxaraq sorğunun hansı IP və ya İP-lərə paylanmasına qərar verirlər.
Aşağıda göründüyü kimi, veb-saytların yüksək əlçatanlığını təmin etmək üçün veb sorğular ümumiyyətlə yük distribyutorunda qarşılanır və ardıcıl olaraq yük distribyutorundan bir neçə veb serverə yönləndirilir. Bu veb serverlər həmçinin Virtual Hosting ilə bir neçə veb sayt təklif edir.
Nədənsə FQDN əvəzinə IP vasitəsilə vebsayta daxil olmamız lazım olduqda, Virtual Hostun həll edilməsi üçün Host başlığı əl ilə əlavə edilməlidir. Curl-da bu istifadə aşağıdakı ekran görüntüsündə göstərilmişdir.
HTTP kimi xidmət edilən saytlarda Host başlığına baxaraq sorğuları bir-birindən ayırmaq mümkün olsa da, paketləri şifrələmək üçün tələb olunan SSL/TLS Handshake səbəbiylə HTTPS-də vəziyyət bir az daha mürəkkəbdir. HTTPS saytlarında, SNI – Server Name Indication adlı plaginlə müştəri veb serverə və ya yük dispetçerinə SSL/TLS Handshake-in əvvəlində hansı vebsaytı (example.com) tələb etməsini bildirir. Beləliklə, server müştəriyə düzgün veb-saytın sertifikatını (example.com) göndərir və SSL/TLS Handshake bu alınan sertifikatla davam etdirilir.
Aşağıdakı ekran görüntüsündə SSL/TLS Handshake-in ilk addımı olan Client Hello mesajında https olaraq çatmağa çalışılan saytın server adının göndərildiyi görülür.
SNI eyni IP-də eyni domen altında olmadan bir çox veb-saytın təqdimatını təmin etsə də, bu, əhəmiyyətli bir çatışmazlıq gətirir. Şəbəkəni dinləyən şəxs və ya xidmət təminatçısı, trafik HTTPS olsa belə, müştərinin hansı sayta daxil olduğunu görə bilər.
Yuxarıda göstərilən çatışmazlığa baxmayaraq, SNI mühüm problemi həll edir, çünki IPv4 ünvanları məhduddur, yəni hər veb sayta ayrıca IP vermək mümkün deyil. Bu yaxınlarda tətbiq edilən və SNI-nin mənfi cəhətlərini aradan qaldıran ESNI-ni gələcək daşqınlarda müzakirə edəcəyik.
Nəhayət, IP vasitəsilə HTTPS ilə xidmət göstərən vebsayta daxil olmağa çalışarkən müştəri SNI məlumatını təqdim etməlidir. Brauzer və komanda xətti müştərilərində (curl, http) avtomatik olaraq təmin edilən SNI, openssl müştərisinə əl ilə verilməlidir.