Server block تنظیمات سایت را بر اساس آدرس، پورت و نام جدا می‌کند. امشب www.nginx.test را با محتوای خودمان و لاگ مستقل راه می‌اندازیم.

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

محیط: فایل WWW_CONF و NGINX_USER مطابق راهنما؛ پورت 80 آزمایشگاه برای دو کلاینت مجاز است.

فایل ثابت و config#

sudo install -d -m 755 /var/www/nginx-lab/public
printf '%s\n' 'nginx static OK' | sudo tee /var/www/nginx-lab/public/index.html
sudo chmod 644 /var/www/nginx-lab/public/index.html

کد و محتوای ثابت root-owned باقی می‌مانند؛ runtime فقط می‌خواند. در WWW_CONF:

server {
    listen 80;
    server_name www.nginx.test;
    root /var/www/nginx-lab/public;
    index index.html;
    autoindex off;
    access_log /var/log/nginx/www-access.log;
    error_log /var/log/nginx/www-error.log warn;
    location / {
        try_files $uri $uri/ =404;
    }
}

root مسیر فایل را با URI ترکیب می‌کند. try_files ابتدا فایل یا پوشهٔ موجود را می‌سنجد و در نبودن هر دو، 404 می‌دهد. autoindex off فهرست فایل‌های پوشه را نمی‌سازد.

در Debian/Ubuntu لینک سایت را بساز:

sudo ln -s "$WWW_CONF" /etc/nginx/sites-enabled/100-www.conf

این فرمان فقط وقتی لینک وجود ندارد اجرا می‌شود. در Alma/Rocky، فایل داخل conf.d خودکار خوانده می‌شود. سایت پیش‌فرض و ترتیب را در شب بعد تنظیم می‌کنیم.

پاسخ واقعی#

پس از اصلاح label در RHEL و روال test/reload:

curl --resolve www.nginx.test:80:192.168.57.10 http://www.nginx.test/
curl -i --resolve www.nginx.test:80:192.168.57.10 http://www.nginx.test/missing

برای RHEL آدرس .30 را بگذار. باید متن خودمان و برای مسیر ناموجود 404 ببینی. نام resolveشده و Host درخواست حفظ می‌شوند.

بازگشت: سایت تازه را از Include یا لینک enabled خارج، سپس config سالم را reload کن. پوشهٔ داده لازم نیست حذف شود؛ فایل‌های تولیدشدهٔ سایت این مخزن با config آزمایشگاهی یکی نیستند.

منبع: پردازش درخواست در Nginx .