بهینه سازی وب سرور Nginx – بخش اول
بهینه سازی وب سرور Nginx – بخش دوم
لاگ گیری خطاها
error_log logs/error.log warn; مکان و سطوح متفاوت دقت نوشتن در تنظیمات لاگ خطا ها را تعیین می کند. یک سطع لاگ گیری خاص، باعث می شود که تمام پیام های مربوط به آن سطح و بالاتر از آن لاگ شود. به عنوان مثال، اگر این مشخصه با مقدار پیش فرض در شود باعث می شود که پیام های error ، crit ، alert و emerg لاگ شود. اگر به این مشخصه پارامتر داده نشود، مقدار پیش فرض آن در نظر گرفته می شود. emerg : موقعیت های اضطراری مثل مواقعی که سرور در حالت غیرقابل استفاده قرار گرفته است. alert : موقعیت های سخت و شدید، مواقعی که باید کار بی درنگ انجام شود. crit : مشکلات مهم که نیاز به آدرس دهی دارند. error : خطایی اتفاق افتاده است و انجام کاری موفقیت آمیز نبوده است.warn : رویدادی برخلاف روند مورد انتظار اتفاق افتاده است اما موجب نگرانی نیست. notice : رویدادی طبیعی اتفاق افتاده است که ارزش خاصی ندارد. info : یک پیام اطلاعاتی که خوب است بدانیم. debug : اطلاعات خطایابی که وقتی مشکلی روی سرور اتفاق می افتد به تشخیص و رفع آن کمک می کند. log_format با access_log فرمت پیام های لاگ شده را تنظیم می کنند. و همچنین ممکن است access_log محل ذخیره لاگ ها و فرمت آنها را تواما مشخص کند.
۱
۲
۳
۴
۵
۶
۷
|
http {
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;
}
}
|
لاگ گیری شرطی
اگر مدیر یک سرور بخواهد تنها از وقوع درخواست های خاصی لاگ گرفته شود می تواند از لاگ گیری شرطی استفاده کند. دستوری که در زیر می بینید کدهای وضعیت HTTP ، ۲xx و ۳xx را لاگ نمی کند. و آنها را استثنا قرار می دهد.
۱
۲
۳
۴
|
map $status $loggable {
~^[۲۳] ۰;
default ۱;
}
|
غیرفعال کردن کلی لاگ گیری
اگر شما به عنوان مدیر سرور از روش جایگزین دیگری برای لاگ گیری استفاده می کنید یا تمایل ندارید تک تک درخواست هایی که به سرور می رسد لاگ شود، اینجاست که نیاز دارید کلا لاگ گیری را روی سرور غیرفعال کنید. با دستورات زیر می توانید لاگ گیری سرور را غیر فعال نمایید:
۱
۲
۳
۴
۵
۶
|
server {
listen ۸۰;
server_name example.com;
access_log off;
error_log off;
}
|
نظارت بر فعالیت های سرور
برخی مدیران سرور برای اینکه پاسخ هایJSON را به صورت بلادرنگ مشاهده کنند نظارت بر فعالیت ها (Activity Monitoring) را روی سرور فعال می کنند. با انجام تنظیمات زیر صفحه ی status.html در /usr/share/nginx/html قرار می گیرد و توسط URL http://۱۲۷.۰.۰.۱/status.html فراخوانی می شود.
همچنین شما می توانید برای مشاهده این آمار سرور خود از Linode Longview استفاده کنید. Long view یک مجموعه خدمات آماری و نموداری در سطح سیستم است که توسط عامل نرم افزاری متن باز Longview تولید شده است و روی هر سیستم لینوکسی قابل نصب است. عامل long view آمار سیستم را جمع آوری می کند و آنها را بهLinode ارسال می کند، در Linode این اطلاعات ذخیره می شود و سپس در قالب های زیبا و معنادار به نمایش گذاشته می شود.
نمونه فایل های تنظیمات افزایش کارایی سرور
هم اکنون ترفند های زیادی جهت افزایش کارایی سرور Nginx شما در قالب سه فایل ایجاد شده است. جزئی از محتویات این سه فایل را می توانید در زیر مشاهده کنید:
فایل sysctl.conf
۱
۲
۳
۴
۵
۶
|
net.core.somaxconn = ۶۵۵۳۶
net.ipv4.tcp_max_tw_buckets = ۱۴۴۰۰۰۰
net.ipv4.ip_local_port_range = ۱۰۲۴ ۶۵۰۰۰
net.ipv4.tcp_fin_timeout = ۱۵
net.ipv4.tcp_window_scaling = ۱
net.ipv4.tcp_max_syn_backlog = ۳۲۴۰۰۰۰
|
فایل limits.conf
۱
۲
|
soft nofile ۴۰۹۶
hard nofile ۴۰۹۶
|
فایل nginx.conf
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
۱۳
۱۴
۱۵
۱۶
۱۷
۱۸
۱۹
۲۰
۲۱
۲۲
۲۳
۲۴
۲۵
۲۶
۲۷
۲۸
۲۹
۳۰
۳۱
۳۲
۳۳
۳۴
۳۵
۳۶
۳۷
۳۸
۳۹
۴۰
۴۱
۴۲
۴۳
۴۴
۴۵
۴۶
۴۷
۴۸
۴۹
۵۰
۵۱
۵۲
۵۳
۵۴
۵۵
۵۶
۵۷
۵۸
۵۹
۶۰
۶۱
۶۲
۶۳
۶۴
۶۵
۶۶
۶۷
۶۸
۶۹
۷۰
۷۱
۷۲
۷۳
۷۴
۷۵
۷۶
۷۷
۷۸
۷۹
۸۰
۸۱
۸۲
۸۳
|
pid /var/run/nginx.pid;
worker_processes ۲;
events {
worker_connections ۶۵۵۳۶;
use epoll;
multi_accept on;
}
http {
keepalive_timeout ۶۵;
keepalive_requests ۱۰۰۰۰۰;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
client_body_buffer_size ۱۲۸k;
client_max_body_size ۱۰m;
client_header_buffer_size ۱k;
large_client_header_buffers ۴ ۴k;
output_buffers ۱ ۳۲k;
postpone_output ۱۴۶۰;
client_header_timeout ۳m;
client_body_timeout ۳m;
send_timeout ۳m;
open_file_cache max=۱۰۰۰ inactive=۲۰s;
open_file_cache_valid ۳۰s;
open_file_cache_min_uses ۵;
open_file_cache_errors off;
gzip on;
gzip_min_length ۱۰۰۰;
gzip_buffers ۴ ۴k;
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 {
~^[۲۳] ۰;
default ۱;
}
server {
listen ۱۲۷.۰.۰.۱;
server_name ۱۲۷.۰.۰.۱;
root /var/www/html;
access_log /var/log/nginx.access_log main;
location / {
proxy_pass http://۱۲۷.۰.۰.۱/;
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 ۹۰;
proxy_send_timeout ۹۰;
proxy_read_timeout ۹۰;
proxy_buffer_size ۴k;
proxy_buffers ۴ ۳۲k;
proxy_busy_buffers_size ۶۴k;
proxy_temp_file_write_size ۶۴k;
proxy_temp_path /etc/nginx/proxy_temp;
}
location ~* .(woff|eot|ttf|svg|mp4|webm|jpg|jpeg|png|gif|ico|css|js)$ {
expires ۳۶۵d;
}
}
}
|