با پیکربندی سرور NGINX خود برای بهترین عملکرد ممکن، بیشترین بهره را ببرید.
NGINX یک وب سرور محبوب، رایگان و منبع باز است. پیکربندی های پیش فرض NGINX به اندازه کافی خوب هستند تا وب سرور کار کند.
با این حال، اگر می خواهید از NGINX به طور کامل استفاده کنید، باید با فایل های پیکربندی آن بازی کنید و پارامترهایی را تنظیم کنید که عملکرد سرور را بهینه می کند. فایل های پیکربندی را در پوشه /etc/nginx در یک ماشین لینوکس پیدا خواهید کرد.
NGINX چیست؟
NGINX یک وب سرور مدرن است که می توانید از آن به عنوان پخش کننده رسانه، سرور ایمیل، پروکسی معکوس، متعادل کننده بار، سرور کش و غیره استفاده کنید.
NGINX که توسط بسیاری از پروفایلهای بزرگ مانند VMware، IBM، Cisco، Apple، Microsoft LinkedIn، Netflix، Facebook، Twitter و غیره استفاده میشود، به طور گسترده به دلیل عملکرد درجه یک خود شناخته شده است. یکی دیگر از مزایای استفاده از NGINX این است که پیکربندی و یادگیری آن آسان است.
پیش نیازهای تنظیم عملکرد NGINX در لینوکس
قبل از شروع به تنظیمات NGINX باید شرایط زیر را برآورده کنید:
- یک سرور NGINX که روی لینوکس مستقر و پیکربندی شده است
- درک اولیه NGINX و فایل های پیکربندی آن
اگر این الزامات را برآورده کنید، آماده تنظیم NGINX برای عملکرد بهینه هستید. بیایید ببینیم چگونه آن را انجام دهیم.
1. فرآیندهای کارگر را در NGINX پیکربندی کنید
معماری NGINX از یک فرآیند اصلی و چندین فرآیند کارگر تشکیل شده است. وظیفه فرآیند اصلی ارزیابی پیکربندی و مدیریت کارگران است. از سوی دیگر، نقش فرآیند کارگر رسیدگی به درخواست های دریافتی و ایجاد ارتباط بین مشتری و سرور است.
مقدار فرآیند به طور پیش فرض روی auto تنظیم شده است. این تعداد پردازش های کارگر را برابر با تعداد هسته های موجود CPU تعیین می کند. برای اینکه بدانید چند هسته CPU در سیستم شما وجود دارد، دستور زیر را اجرا کنید:
grep processor /proc/cpuinfo | wc -l
اگر می خواهید تعداد فرآیندهای کارگر را افزایش دهید، باید این را در فایل پیکربندی NGINX پیکربندی کنید.
فایل را با نانو باز کنید:
nano etc/nginx/nginx.conf
برای پیکربندی بیشتر فرآیندهای کارگر، مقدار پیش فرض را به حداکثر تعداد هسته های CPU موجود در سیستم خود تغییر دهید.
2. اتصالات کارگر را پیکربندی کنید
پارامتر دیگری که می توانید برای بهبود عملکرد NGINX تغییر دهید، اتصالات کارگری است. این حداکثر تعداد اتصالات TCP است که هر فرآیند کارگر به طور همزمان می تواند مدیریت کند.
اکثر سیستم ها دارای مقدار پیش فرض 512 اتصال هستند، اما بسیاری از سیستم های مدرن تعداد بیشتری را نیز پشتیبانی می کنند. می توانید بررسی کنید که سیستم شما با چند اتصال پشتیبانی می کند:
ulimit -n
خروجی حداکثر تعداد اتصالات پشتیبانی شده خواهد بود. سپس می توانید متغیر worker_connections را در فایل پیکربندی NGINX تغییر دهید تا عملکرد را بهبود ببخشید.
3. به فشرده سازی GZIP در NGINX اجازه دهید
NGINX از GZIP برای فشرده سازی و رفع فشرده سازی فایل استفاده می کند. اگر در فایل پیکربندی NGINX فعال باشد، میتوانید پهنای باند را ذخیره کنید و زمانی که اتصال کند است، زمان بارگذاری وبسایت را افزایش دهید.
برای اجازه دادن به فشرده سازی GZIP، خطوط زیر را در فایل پیکربندی NGINX اضافه کنید:
server {
gzip on;
gzip_vary on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
gzip_disable "MSIE [1-6]\.";
}
4. Limit Timeout Value در NGINX
کاهش مقادیر تایم اوت نیز نقش مهمی در افزایش عملکرد NGINX دارد. اتصالات keepalive هنگام باز و بسته کردن اتصالات، سربار پردازنده و شبکه را کاهش می دهد.
میتوانید پارامترهای زیر را در فایل پیکربندی تغییر دهید تا زمانبندی را محدود کنید:
http
{
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
}
5. اندازه بافر را تنظیم کنید
همچنین می توانید بافرهای NGINX را برای بهینه سازی عملکرد سرور تنظیم کنید. اگر اندازه بافر خیلی کم باشد، NGINX روی یک فایل موقت می نویسد که باعث می شود عملیات I/O عظیم به طور مداوم اجرا شود.
برای اینکه NGINX بهترین عملکرد را داشته باشد، باید پارامترهای بافر زیر را تنظیم کنید:
http
{
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 4 4k;
}
6. گزارش های دسترسی را غیرفعال کنید یا بافر کردن گزارش های دسترسی را فعال کنید
گزارشها مقدار زیادی از فضای دیسک و چرخههای CPU/IO را مصرف میکنند که اگر هر درخواستی را ثبت کند، میتواند بر عملکرد سرور تأثیر بگذارد.
شما می توانید گزارش های دسترسی را غیرفعال کنید که باعث صرفه جویی در فضای دیسک و پردازش CPU می شود. برای غیرفعال کردن گزارش های دسترسی، خط زیر را به فایل پیکربندی NGINX اضافه کنید:
access_log off;
گزارشها مهم هستند زیرا به عیبیابی یک مشکل کمک میکنند. غیرفعال کردن کامل گزارش ها عمل خوبی نیست. در این مورد، می توانید بافر کردن گزارش های دسترسی را فعال کنید. این به NGINX اجازه میدهد یک سری از گزارشها را بافر کند و بهجای اعمال عملیاتهای مختلف گزارش روی هر درخواست، آنها را در یک فایل گزارش با هم بنویسد.
خط زیر را در فایل پیکربندی NGINX اضافه کنید تا امکان بافر کردن لاگ های دسترسی فراهم شود:
access_log /var/log/nginx/access.log main buffer=16k
7. دوره ذخیره محتوای استاتیک را در NGINX تنظیم کنید
محتوای موجود در وب سایت که در تمام صفحات یکسان باقی می ماند به عنوان محتوای ثابت شناخته می شود. ذخیره سازی این محتوا در حافظه پنهان اجازه می دهد تا آن را در مکان هایی قرار دهید که به راحتی در دسترس هستند. این مکانیسم استفاده از پهنای باند را کاهش می دهد، دسترسی سریع را امکان پذیر می کند و متعاقباً عملکرد وب سایت را بهبود می بخشد.
هنگامی که یک کلاینت محتوای ثابت را درخواست می کند، سرور یک نسخه کش شده از محتوا را ارائه می دهد. خطوط زیر را در فایل میزبان مجازی قرار داده شده در دایرکتوری /etc/nginx/sites-available اضافه کنید:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 90d;
}
این پیکربندی فایل ها را به مدت 90 روز از آخرین زمان دسترسی مرورگر در حافظه پنهان نگه می دارد.
8. Open File Cache را در NGINX فعال کنید
همچنین می توانید از پارامترهای کش فایل باز در فایل پیکربندی NGINX برای بهبود عملکرد آن استفاده کنید. این دستورالعمل اجازه می دهد تا توصیف کننده فایل و فایل های اغلب بازدید شده در حافظه پنهان در سرور ذخیره شوند.
برای فعال کردن کش فایل باز، خطوط زیر را در بخش http در فایل پیکربندی اضافه کنید:
http {
open_file_cache max=1024 inactive=10s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
}
با اصلاح فایل های پیکربندی آن، بهترین ها را از NGINX به ارمغان بیاورید
یک روش خوب که هنگام تغییر پیکربندی ها باید رعایت شود، این است که هر بار با یک تنظیم برخورد کنید و آن را آزمایش کنید. اگر کار کرد، به تنظیمات بعدی بروید. اگر نه، همیشه می توانید پیکربندی را به مقدار پیش فرض برگردانید.
با تغییر پارامترهای پیکربندی شده در فایل های پیکربندی NGINX مانند nginx.conf و فایل های میزبان مجازی، می توانید NGINX را هک کنید تا بهترین عملکرد را داشته باشید.