هدف این دوره ساخت چند سرویس وب با ورودی قابل کنترل است. امشب آزمایشگاهی می‌سازیم که بتوان در آن درخواست مجاز، درخواست نامجاز و خرابی backend را جدا دید.

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

محیط: VMهای راهنمای دوره، حساب sudo و کنسول مستقل؛ آشنایی با shell، IP، DNS و systemd.

لایه‌های درخواست#

HTTP قرارداد درخواست و پاسخ وب است. DNS نام را به آدرس تبدیل می‌کند، TCP اتصال می‌سازد و در HTTPS، TLS پیش از HTTP هویت و رمزنگاری ارتباط را تنظیم می‌کند. Nginx سپس server block و location را انتخاب می‌کند و یا فایل می‌خواند یا درخواست را به برنامه می‌فرستد.

در آزمایشگاه، وب‌سرور Debian/Ubuntu روی 192.168.57.10 و Alma/Rocky روی .30 است. کلاینت مجاز .20 و کلاینت نامجاز .21 هستند؛ edge اختیاری .40 است. شبکهٔ Host-only باید از LAN واقعی جدا باشد.

cat /etc/os-release
ip -br address
ip route
timedatectl status
ss -lntup
mkdir -p ~/nginx-lab/evidence

نسخه، ساعت و شبکهٔ واقعی را ثبت کن. نام‌های www.nginx.test، app.nginx.test و wp.nginx.test در lab استفاده می‌شوند؛ .test برای گواهی عمومی نیست. با curl از --resolve و برای مرورگر از hosts استفاده خواهیم کرد.

مرز تغییر#

Nginx و Apache نمی‌توانند روی یک IP و پورت یکسان هم‌زمان listen کنند. VM مستقل دورهٔ Nginx را از آزمایشگاه Apache جدا نگه دار. کارت NAT فقط برای بسته‌هاست؛ backendهای تمرین روی loopback یا شبکهٔ کانتینر خصوصی خواهند بود.

آزمون و بازگشت: Snapshot بگیر، از کنسول وارد شو و مسیر SSH را از کلاینت مجاز بررسی کن. شکست ping به‌تنهایی قطع HTTP را ثابت نمی‌کند. در دفترچه وضعیت مطالعه، اجرا و تأیید را جدا بنویس؛ خروجی مورد انتظار متن، گزارش آزمایش واقعی چهار توزیع نیست.

تمرین: تفاوت خطای resolve نام، connection refused و HTTP 403 را توضیح بده. هرکدام شاهد و محل بررسی متفاوت دارد.

منبع: راهنمای آغاز Nginx .