نشانی مرورگر همیشه مسیر مستقیم روی دیسک نیست. امشب یک پوشهٔ خارج از DocumentRoot را با Alias منتشر می‌کنیم و تفاوت محدود کردن فایل و URL را می‌بینیم.

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

محیط: سایت www شب پنجم؛ ماژول alias در خروجی -M دیده شود.

یک مسیر فایل، یک مسیر وب#

Directory policy مسیر فایل‌سیستم و Location policy مسیر URL است. برای برنامهٔ پراکسی‌شده ممکن است اصلاً فایل محلی وجود نداشته باشد؛ بنابراین قانون Directory به‌تنهایی آن URL را محدود نمی‌کند.

sudo install -d -m 755 /var/www/apache-lab/downloads
printf '%s\n' 'lab download' | sudo tee /var/www/apache-lab/downloads/readme.txt

داخل میزبان www این نگاشت را اضافه کن:

Alias /downloads/ /var/www/apache-lab/downloads/
<Directory /var/www/apache-lab/downloads>
    Options -Indexes -ExecCGI -Includes
    AllowOverride None
    Require all granted
</Directory>

slash انتهای هر دو طرف را هماهنگ نگه دار. در RHEL restorecon را روی پوشهٔ تازه اجرا کن. پس از اعمال تغییر:

curl -i --resolve www.example.test:80:192.168.56.10 \
  http://www.example.test/downloads/readme.txt
curl -i --resolve www.example.test:80:192.168.56.10 \
  http://www.example.test/downloads/

انتظار داریم فایل با 200 و پوشهٔ بدون index با 403 پاسخ دهد. پاسخ 404 برای فایل، احتمال نگاشت اشتباه را مطرح می‌کند؛ 403 نیاز به بررسی policy و مجوز دارد.

ترکیب policyها#

اگر هم Directory و هم Location برای یک درخواست داری، ترتیب ادغام تنظیمات را بخوان. یک Require all granted بعدی می‌تواند محدودیت موردنظر را جایگزین کند. برای کنترل امنیتی، یک محل روشن برای policy انتخاب کن و مسیرهای فایل، Alias و پراکسی را جدا آزمایش کن.

تمرین و بازگشت: Alias را بردار؛ باید /downloads/readme.txt به 404 برسد و صفحهٔ اصلی سالم بماند. پوشهٔ داده لازم نیست حذف شود. بعدها هیچ Alias به پوشهٔ backup یا تنظیمات خصوصی اضافه نکن.

منبع: نگاشت URL به فایل ، ادغام بخش‌های پیکربندی .