دو نام می‌توانند روی یک IP سایت‌های متفاوت داشته باشند، اما درخواست با نام ناشناس هم به یک میزبان می‌رسد. امشب ترتیب انتخاب سایت و میزبان پیش‌فرض را آزمایش می‌کنیم.

این جلسه بخشی از دورهٔ آپاچی در ۵۰ شب است. قرارداد نام‌ها، مسیرها و روش اعمال تغییر را در راهنمای دوره بخوان.

محیط: سایت شب پنجم روی پورت 80؛ این آزمایش پیش از TLS انجام می‌شود.

سایت دوم#

پوشهٔ /var/www/apache-lab/docs را مانند شب پنجم بساز و index.html آن را با متن second site OK پر کن. میزبان دیگری با ServerName docs.example.test، DocumentRoot جدید و همان Directory policy بساز؛ در Debian فایل 110-docs.conf را فعال کن و در RHEL آن را در conf.d قرار بده.

Apache ابتدا IP و پورت و سپس نام Host را تطبیق می‌دهد. اگر نامی تطبیق نخورد، اولین VirtualHost همان IP و پورت انتخاب می‌شود. برای پاسخ محدود به نام ناشناس، فایل 000-catchall.conf را پیش از دو سایت بارگذاری کن:

<VirtualHost *:80>
    ServerName catchall.invalid
    <Location />
        Require all denied
    </Location>
</VirtualHost>

در Debian آن را با a2ensite 000-catchall فعال کن. فایل پیش‌فرض توزیع نباید هنوز جایگاه اول را بگیرد؛ خروجی -S تعیین‌کننده است.

sudo "$APACHE_CTL" -S
curl --resolve docs.example.test:80:192.168.56.10 http://docs.example.test/
curl -i -H 'Host: unknown.example.test' http://192.168.56.10/

باید محتوای سایت دوم و برای نام ناشناس پاسخ 403 ببینی. برای RHEL از IP .30 استفاده کن. ServerAlias فقط نام جایگزین سایت است؛ DNS record ایجاد نمی‌کند.

مرز این کنترل#

رد نام ناشناس مانع دسترسی کسی که Host درست می‌فرستد نیست. محدودیت IP، احراز هویت و گواهی TLS کنترل‌های جدا هستند. پس از شب دوازدهم، میزبان پیش‌فرض پورت 443 نیز باید مشخص باشد؛ پیش از HTTP، TLS به یک گواهی نیاز دارد.

تمرین و بازگشت: ترتیب دو فایل را عوض کن و اثر آن را با -S ببین. برای بازگشت، میزبان اضافه را غیرفعال و ترتیب نسخهٔ سالم را بازیابی کن؛ سایت اصلی باید همچنان پاسخ خودش را بدهد.

منبع: انتخاب میزبان مجازی مبتنی بر نام .