آپاچی؛ شب ۶: چند سایت و پاسخ به نام ناشناس
فهرست نوشته
دو نام میتوانند روی یک 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 ببین. برای بازگشت، میزبان اضافه را غیرفعال و ترتیب نسخهٔ سالم را بازیابی کن؛ سایت اصلی باید همچنان پاسخ خودش را بدهد.
منبع: انتخاب میزبان مجازی مبتنی بر نام .