آموزش بهینه سازی Nginx (بخش چهارم)

نویسنده: آبتین حیدرآبادیان| دسته بندی: آموزش سرور مجازی لینوکس میزبانی وب | نظرات: 0 نفر
آموزش بهینه سازی Nginx (بخش چهارم)
2220
02 آبان 1397
آبتین حیدرآبادیان نویسنده

در این بخش از سری مطالب آموزش Nginx در وبلاگ آذرآنلاین به درخواست کاربران گرامی با آموزش بهینه سازی Nginx (بخش چهارم) خدمت شما خواهیم بود تا بتوانید با رعایت و تنظیم چندین بخش ، بهترین کارایی را از Nginx داشته باشید.

در مطالب قبلی بهینه سازی Nginx که از طریق لینک‌های زیر قابل دسترسی است به مواردی چون کار با Workerها ، نحوه تنظیم وقفه‌ها ، تنظیمات TCP ، تنظیمات Gzip و KeepAlive و ... اشاره شد و برای هر یک مثال‌هایی ذکر شد. حال در این بخش با آخرین بخش از بهینه سازی Nginx همراه ما باشید تا پس از به اتمام رساندن این بخش یک Nginx کاملا بهینه شده برای سایت خود داشته باشید.

آموزش بهینه سازی Nginx (بخش اول)
آموزش بهینه سازی Nginx (بخش دوم)
آموزش بهینه سازی Nginx (بخش سوم)

با ادامه مبحث آموزش بهینه سازی Nginx (بخش چهارم) همراه ما باشید.

آموزش بهینه سازی Nginx (بخش چهارم)

تنظیمات گزارش خطاها در Nginx

تنظیمات نوع گزارش‌گیری یا همان لاگ‌های این وب سرور در فایل Nginx.conf قابل تنظیم است که در بخش اول بهینه سازی Nginx به آن بیشتر اشاره شد.

در این فایل دو پارامتر اصلی logs/error.log و Error_log ، مکان قرارگیری فایل لاگ و همچنین سطح دقت در نوشتن آنها تنظیم می‌گردد.

سطح دقت نوشتن لاگ‌ها در Nginx بسته به حساسیت عملکرد وب سرور و نسبت به نظر شما قابل تغییر است و شما می‌توانید در چند سطح مختلف درخواست لاگ‌گیری کنید که در ادامه به توضیح  آن خواهیم پرداخت.

اما قبل از توضیح سطوح به مثال زیر برای تنظیمات لاگ توجه داشته باشید که شما نیز می‌توانید به دلخواه آنها را تغییر داده و کد را در فایل Nginx.conf قرار دهید.

error_log  /var/log/nginx.error_log  warn;
log_format compression '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" "$gzip_ratio"';
server {
gzip on;
access_log /spool/logs/nginx-access.log compression;
}

همانطور که در خط اول این کد مشاهده می‌کنید ، از کلمه warn استفاده شده که اشاره به سطح لاگ گیری داد. سایر سطوحی که شما می‌توانید به جای Warn استفاده نمایید به شرح زیر می‌باشد.

emerg : موضعیت فوق اضطراری مثل مواقعی که سرور در حالت Down است را گزارش می‌گیرد.

alert : موقعیت شدید عملکردی که همراه با آلارم است را لاگ گیری می‌کند.

crit : مشکلات مهمی که برای وب سرور پیش آمده و نیاز به آدرسی دهی دارد را لاگ می‌گیرد.

error : خطاها و یا کارهایی که در هنگام انجام آن ، وب سرور موفق نبوده را لاگ می‌گیرد.

warn : رخدادهایی که اتفاق افتاده اما فعلا جای نگرانی ندارد را لاگ گیری می‌کند.

notice : رویدادهای طبیعی که اتفاق افتاده اما ارزش خاصی از لحاظ آماری ندارد.

info : رویداد و یا پیامی که اطلاعات مفیدی از یک عملکرد را ارائه می‌دهد.

Debug : اطلاعات خطایابی که وقتی مشکلی روی سرور اتفاق می افتد به تشخیص و رفع آن کمک می کند.

به این ترتیب شما نسبت به نیاز خود می‌توانید سطح لاگ گیری و نحوه آن را مشخص کرده و از وضعیت سرور خود اطلاعات کامل پیدا نمایید.

غیرفعال کردن گزارش‌گیری به صورت کامل

اگر به طور معمول از سیستم لاگ‌گیری Nginx استفاده می‌نمایید به هیچ وجه نباید این بخش را غیرفعال کنید چون ممکن است در مواقع ضروری و یا بروز مشکلات ، به شما برای رفع آن کمک کند و اطلاعاتی کامل از رخداد در اختیار شما قرار دهد ، اما اگر سیستم‌ها و یا نرم‌افزارهای متعدد دیگری برای انجام امور گزارش‌گیری و ...  دارید ، آنگاه ممکن است شما دیگر نیازی به این لاگ‌ها نداشته باشید.

بنابراین در صورت نیاز به غیرفعال کردن لاگ‌گیری در Nginx تنها نیاز است کدهای زیر را به جای کدهای تنظیمات لاگ جایگزین نمایید.

server {
listen       80;
server_name  example.com;
access_log  off;
error_log off;
}

در این جا آموزش بهینه‌سازی Nginx به پایان رسیده است . در پایان نمونه‌ای از فایل‌های بهینه و منتشر شده توسط سایت رسمی nginx را مشاهده می‌نمایید.

دقت داشته باشید فایل‌های زیر تنها نمونه هستند و مواردی مانند Workerها و یا سایر موارد پردازشی باید نسبت به قدرت سرور شما تنظیم گردد.

نمونه فایل Nginx.conf

pid /var/run/nginx.pid;
worker_processes 2;
events {
worker_connections 65536;
use epoll;
multi_accept on;
}
http {
keepalive_timeout 65;
keepalive_requests 100000;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
client_body_buffer_size 128k;
client_max_body_size 10m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
output_buffers 1 32k;
postpone_output 1460;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 5;
open_file_cache_errors off;
gzip on;
gzip_min_length 1000;
gzip_buffers 4 4k;
gzip_types text/html application/x-javascript text/css application/javascript text/javascript text/plain text/xml application/json application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/xml font/eot font/opentype font/otf image/svg+xml image/vnd.microsoft.icon;
gzip_disable "MSIE [1-6]\.";
# [ debug | info | notice | warn | error | crit | alert | emerg ]
error_log /var/log/nginx.error_log warn;
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
log_format download '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"';
map $status $loggable {
~^[23] 0;
default 1;
}
server {
listen 127.0.0.1;
server_name 127.0.0.1;
root /var/www/html;
access_log /var/log/nginx.access_log main;
location / {
proxy_pass http://127.0.0.1/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_temp_path /etc/nginx/proxy_temp;
}
location ~* .(woff|eot|ttf|svg|mp4|webm|jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
}
}
}

نمونه فایل limits.conf

soft nofile 4096
hard nofile 4096

نمونه فایل sysctl.conf

net.core.somaxconn = 65536
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_max_syn_backlog = 3240000

امیدواریم در پایان از مطلب آموزش بهینه سازی Nginx (بخش چهارم) و در مجموع کلیه مطالب از این مجموعه استفاده لازم را برده باشید.

 کاربر گرامی شما می‌توانید سؤالات مربوط به این آموزش را در بخش کامنت‌ها عنوان کرده و در همین قسمت پاسخ خود را دریافت کنید و یا برای رفع مشکلات دیگر در زمینه آموزش‌های آذرآنلاین به بخش Community مراجعه کرده و مشکل خود را در آن مطرح نمایید تا در اسرع وقت کاربران دیگر و کارشناسان به سؤالات شما پاسخ دهند.