لینوکس - تنظیم Nginx


وب‌سرور Nginx یکی از بهترین وب‌سرورهای متن‌باز با کارایی بالا و امکانات زیاد است که اولین بار در سال ۲۰۰۴ منتشر شد. این وب‌سرور به دلیل کارایی بالا، در بسیاری سایت‌های پرترافیک مانند Dropbox و Netflix استفاده شده است. بله! وب‌سرور مورد استفاده Quera نیز Nginx است.

در این سؤال می‌خواهیم تنظیماتی در این وب‌سرور (در لینوکس) انجام دهیم.

جزئیات🔗

در سرور موردنظر فایل nginx.conf به صورت زیر تنظیم شده است:

worker_processes 1;

events {
    worker_connections 200;
}

http {
    # Basic Settings
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    # Logging Settings
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    # Include Other Configs
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}
Plain text

از شما می‌خواهیم فایل /etc/nginx/conf.d/mysite.conf را ایجاد کنید و طبق نیازمندی‌های زیر تنظیمات مورد نیاز را در آن انجام دهید.

نیازمندی اول🔗

می‌خواهیم با رسیدن درخواست به http://localhost/static/، فایل‌های پوشه /usr/share/nginx/static سرو (serve) شود. مثلاً در صورتی که محتوای این پوشه به شکل زیر باشد، با مراجعه به آدرس http://localhost/static/style/style.css باید فایل style.css ارسال شود.

/usr/share/nginx/static
├── image.jpg
├── style
│   ├── style.css
│   └── bootstrap.min.css
└── js
    ├── utils.js
    └── bootstrap.min.js
Plain text

نیازمندی دوم🔗

می‌خواهیم از بین فایل‌های قسمت قبل، فایل‌های CSS و JS با gzip فشرده شوند. توجه کنید که سایر فایل‌ها نباید فشرده شوند.

نیازمندی سوم🔗

می‌خواهیم هر درخواستی که به http://localhost/blog رسید به https://blog.quera.ir منتقل (redirect) شود.

چند مثال:

آدرس درخواست انتقال به
http://localhost/blog https://blog.quera.ir
http://localhost/blog/ https://blog.quera.ir/
http://localhost/blog/category/feature/ https://blog.quera.ir/category/feature/

برای انتقال از کد ۳۰۲ یا ۳۰۷ (انتقال موقت) استفاده کنید.

نیازمندی چهارم🔗

می‌خواهیم فایل‌های پوشه static (که در نیازمندی اول serve شد) تا ۲۴ ساعت در مرورگر cache شوند.

نیازمندی پنجم🔗

می‌خواهیم درخواست‌هایی که از طرف curl ارسال می‌شود با پاسخ ۴۰۳ مواجه شود.

نکات🔗

  • توجه کنید که در این مسئله امکان تغییر فایل اصلی تنظیمات (nginx.conf) وجود ندارد.
  • یک فایل Zip شامل فایل mysite.conf را آپلود کنید.