این آزمون دو بخش اول دوره (مبانی، و reverse proxy و HTTPS) را با ۲۵ سؤال سناریویی میسنجد؛ شبیه مشکلهایی که روی سرور واقعی پیش میآید. بعد از هر پاسخ، جواب درست و توضیح را میبینی و نتیجهی نهایی در پیشرفت من ذخیره میشود.
؟ آزمون میانهی دورهی Nginx
روی یک سرور تازه Nginx نصب کردهای؛ از داخل سرور curl localhost صفحهی خوشامد را نشان میدهد ولی از لپتاپت باز نمیشود. اولین چیزی که بررسی میکنی؟
sudo ufw allow 'Nginx Full'؛ و SSH را هم مجاز نگه دار.
سرویس nginx بعد از یک تغییر شروع نمیشود و journalctl میگوید bind() to 0.0.0.0:80 failed (98: Address already in use). چه میکنی؟
یک پورت را فقط یک برنامه میتواند بگیرد.
روی سروری که IPv6 خاموش است، apt install nginx با «socket() [::]:80 failed (97: Address family not supported)» شکست میخورد. راهحل؟
بسته نصب شده؛ فقط شروع سرویس شکست خورده.
همکارت بعد از هر تغییر کوچک sudo systemctl restart nginx میزند. چه پیشنهادی میدهی و چرا؟
reload بدون قطع، و با && فقط اگر آزمایش موفق بود.
nginx -t خطای «unknown directive "proxy_pas"» میدهد. یعنی چه؟
پیام همیشه اسم فایل و شمارهی خط را هم میگوید.
سایت جدید را در sites-available ساختی، لینکش را در sites-enabled گذاشتی، ولی nginx -t میگوید «Too many levels of symbolic links». علت؟
رباتها IP سرور را اسکن میکنند و صفحهی اول فروشگاه را با دامنههای عجیب ایندکس کردهاند. چه میکنی؟
درخواست با Host ناشناخته به فروشگاه نرسد.
هر دو زیردامنهی api.shop.ir و img.shop.ir باید به یک server block بروند، ولی shop.ir خودش به block دیگری. server_name کدام؟
*.shop.ir خود shop.ir را نمیگیرد.
location /static/ (پیشوندی) و location ~* \.(css|js)$ داری. فایل /static/app.css از کدام سرو میشود؟
پیشوند معمولی به regex میبازد.
در یک بررسی امنیتی معلوم شده /uploads../.env قابل دانلود است. تنظیم فعلی location /uploads { alias /srv/uploads/; } است. اصلاح؟
باگ off-by-slash.
SPA React بعد از هر deploy، روی بعضی کاربران صفحهی سفید با خطای «Unexpected token <» در کنسول نشان میدهد. محتملترین علت؟
دارایی گمشده باید 404 واقعی بدهد.
صفحهی ۴۰۴ زیبای سایت در Google Search Console بهعنوان صفحهی موفق دیده میشود. چرا؟
error_page کد ۴۰۴ را حفظ میکند.
پوشهی سایت را با git clone در /var/www/site گرفتهای و root همانجاست. خطر و راهحل؟
اسکنرها هر روز دنبال /.git/config میگردند.
لاگ نشان میدهد یک IP در ده دقیقه ۳۰۰ بار /.env، /wp-login.php و /phpmyadmin را خواسته. این چیست؟
با rate limiting (درس بعدی) و بستن فایلهای حساس.
کدام خط پرتکرارترین صفحههایی که ۴۰۴ دادهاند را از access.log (combined) درمیآورد؟
فیلد ۹ کد وضعیت و ۷ مسیر است؛ uniq -c بدون sort غلط میشمارد.
تیم برنامهنویسی میگوید «API کند نیست». چطور با لاگ Nginx ثابت میکنی کدام endpoint ها کندند؟
upstream_response_time زمان خود اپ را جدا نشان میدهد.
لاگ را دستی با mv جابهجا کردهای و فایل access.log تازه ساخته نمیشود. چرا؟
logrotate همین را با invoke-rc.d nginx rotate انجام میدهد.
اپ Django پشت Nginx بعد از فعال کردن HTTPS در حلقهی بیپایان ریدایرکت به https میافتد. علت محتمل؟
proxy_set_header X-Forwarded-Proto $scheme و تنظیم SECURE_PROXY_SSL_HEADER در اپ.
در زمان deploy، کاربران چند ثانیه 502 میبینند. سادهترین بهبود چیست؟
Nginx درخواست ناموفق را به سرور بعدی upstream میدهد.
در location WebSocket نوشتهای proxy_set_header Upgrade و Connection، و include proxy_params در سطح server است. اپ دیگر IP واقعی کاربران WebSocket را نمیبیند. چرا؟
قاعدهی ارثبری directive های آرایهای.
certbot با «Timeout during connect (likely firewall problem)» شکست میخورد. اول چه چیزی را بررسی میکنی؟
چالش HTTP-01 از پورت ۸۰ میآید.
سه ماه بعد از راهاندازی، سایت با خطای «گواهی منقضی شده» باز میشود. چه چیزی را باید از روز اول انجام میدادی؟
گواهیهای ۹۰ روزه باید خودکار تمدید شوند.
گزارش امنیتی میگوید «صفحهی ورود در iframe سایت دیگر قابل نمایش است». کدام هدر؟
جلوی clickjacking.
هدرهای امنیتی را در server گذاشتهای ولی روی /admin/ که add_header Cache-Control no-store دارد نیستند. چرا؟
snippet را آنجا هم include کن.
میخواهی CSP را روی سایت فعال کنی ولی نمیدانی چه چیزهایی میشکند. قدم اول؟
Report-Only فقط گزارش میدهد و چیزی را مسدود نمیکند.