آموزش تنظیمات و بهینه سازی وب سرور nginx
حتما نام nginx را شنیده اید و یا حتما از این وب سرور قدرتمندی که فقط چندی سال از ظهورش میگذرد استفاده میکنید.
توجه داشته باشید این آموزشی در نسخه های ۱٫۶ و ۱٫۷ تست شده است.
ابتدا با دستور زیر فایل کانفیگ وب سرور nginx را ویرایش میکنیم:
sudo nano /etc/nginx/nginx.conf
پس از وارد کردن دستور زیر به دنبال مقادیر دو خط زیر بگردید که بترتیب به صورت پیشفرض ۱ و ۱۰۲۴ میباشد.
این ۲ مقدار میتوان گفت مهمترین بخشاز تنظیمات این وب سرور میباشد و درصورت تنظیم صحیح نتیجه ای ایده ال خواهد داشت:
worker_processes 1;
worker_connections 1024;
عبارت worker_connections به معنی توانایی میزبانی افراد/ثانیه است که در اینجا ۱۰۲۴نفر در ثانیه داریم.
برای فهمیدن میزان قابل تنظیم worker processes دستور زیر را وارد کنید:
grep processor /proc/cpuinfo | wc -l
خروجی بالا میتواند مقدار مناسبی برای worker processes باشد.
همینطور خروجی دستور زیر نیز مقدار مناسبی برای worker_connections باشد:
ulimit -n
Buffers
یکی دیگر از مهمترین بخش ها برای کانفیگ nginx بخش buffers میباشد.
و اگر اندازه آن پایین باشد nginx مجبور به نوشتن temporary file میشودکه نتیجه افزایش استفاده از هاردیسک و read and write مداوم است.
اکنون قبل از تغییر این مقادر میبایستی با موارد زیر آشنا شوید:
client_body_buffer_size
: یک client buffer size به معنی ارسال اکشن POST برای وب سرور است(اکشن POST به صورت مدارم ارسال میشود.)
client_header_buffer_size
:مانند قبلی با این تقاوت که client header size است و بهترین مقدار آن ، ۱K میباشد.
client_max_body_size
: تعیین کننده بیشتر حجم درخواست کاربر به سرور است. در صورتی که درخواست بیش از حد Max باشد عبارت ۴۱۳ error یا Request Entity Too Large را به کاربر نشان میدهد.
large_client_header_buffers
:همانطور که از نامش پیداست به معنی حداکثر اندازه Buffer ها برای large client headers است.
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 2 1k;
برای خرید سرور مجازی با کانفیگ رایگان دایرکت ادمین و NGinx کلیک کنید
Timeouts
مقدار ها client_body_timeout و client_header_timeout مهمترین این بخش هستند(به زبان ساده کارشان این است که مسئول داکثر زمان برای منتظر ماندن برای درخواست کاربر هستند و در صورتی که با Timeout مواجه شوند عبارت ۴۰۸ error یا Request time out به کاربر نشان میدهند.)
keepalive_timeout نیز به زبان ساده به معنی زمان قطع اتصال کاربر به سرور در هر دوره توسط nginxاست.
و در نهایت send_timeout به عبارتی زمانی است که کاربر فعالیتی نکند – درخوستی ارسال نشود – که در این صورتnginx اتصال را قطع میکند.
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
فشرده سازی GZip
با Gzip میتوان انتقال اطلاعات شبکه بین کاربر و سرور تا حد زیادی کاهش داد با این حال توجه داشته باشید در صورت افزایش gzip_comp_level به اصطلاح باعث اتلاف سیکل Cpu میشود.(Wasting Cpu Cycles )
gzip on;
gzip_comp_level 2;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/x-javascript text/xml text/css application/xml;
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
}
پسوند مورد نظر را در خط بالا مانند jps , css , js اضافه کنید.
عملیات Log برداری:
درصورتی که به این قسمت نیازی ندارید میتوانید با تغییر دستور زیر این عملیات را غیرفعال کنید:
access_log off;
اکنون تغییرات را ذخیره و دستور زیر را وارد سپس تغییرات را مشاهده کنید!!
sudo service nginx restart
امیدوارم این آموزش مفید واقع شده باشد.
اولین نفری باشید که از آموزشها و تخفیفهای ویژه با خبر میشوید 😉
با عضویت در خبرنامه از 80 درصد تخفیف بهره مند شوید