Nginx (یا engin x - انجین ایکس) یک وب سرور قدرتمند چند پلتفرومه، رایگان و Open Source و همچنین نرم افزار reverse proxy میباشد که به زبان C نوشته شده است. همچنین یک پراکسی سرور IMAP/POP3 و TCP/UDP میباشد، همچنین میتواند به عنوان یک Load Balancer مورد استفاده قرار گیرد.
انجین ایکس یک سرور HTTP شناخته شده (قابل مقایسه با سرور HTTP آپاچی) است که بسیاری از سایت های روی وب از آن بهره میبرند و در حقیقت این وب سرور به دلیل ثبات و کارایی بالا بسیار معروف میباشد.
زمانیکه شما میخواهید تجربه کاربری روی سایت خود را افزایش دهید فاکتورهای مهم و گوناگونی هستند که باید بررسی کنید، شامل سرعت سایت و سرعت صفحه (همچنین با عنوان زمان لود صفحه نیز شناخته میشود). اگر سایت شما از Nginx استفاده میکند در نتیجه شما میتوانید برای دسترسی به هدف بالا از ابزار ngx_pagespeed استفاده کنید.
همچنین پیشنهاد میشود مطالعه کنید.
نصب Mod_Pagespeed برای بهبود کارایی سرور آپاچی (به زودی)
نصب Ngx_Pagespeed برای بالا بردن سرعت Nginx در اوبونتو و دبیان
ابزار Ngx_Pagespeed یک ماژول رایگان و اوپن سورس برای Nginx میباشد که برای افزایش سرعت سایت ها و کاهش زمان لود صفحه مورد استفاده قرار میگیرد. این ابزار به طور چشم گیری مدت زمانیکه طول میکشد تا کاربران محتوای سایت را ببینند و یا دیتایی در سایت وارد یا از آن دریافت کنند، را کاهش میدهد.
قابلیت های Ngx_Pagespeed
در این مقاله ما به شما نحوه نصب Nginx به همراه ngx_pagespeed و تست کامل روی RedHat/CentOS 7 نشان خواهیم داد.
مرحله اول : نصب Nginx از Source
1 - برای نصب انجین اکس به همراه ngx_pagespeed شما باید آنرا از سورس کامپایل کنید. در ابتدا تمام پکیج های مورد نیاز برای کامپایل Nginx از سورس کد را همانند زیر نصب کنید.
2 - سپس source فایل آخرین ورژن Nginx (که در حال حاضر آخرین ورژن 1.13.2 میباشد) را با استفاده از دستور wget دانلود و سپس با استفاده از دستور tar همانند زیر آنرا extract کنید.
3 - سپس، فایل سورس ngx_pagespeed را دانلود و همانند زیر با استفاده از دستور unzip فایل را از حالت فشرده خارج کنید.
4 - اکنون به دایرکتوری اکسترکت شده ngx_pagespeed وارد شده و Library های بهینه سازی pagespeed به منظور کامپایل Nginx را دانلود کنید.
توجه : لینک library های بهینه سازی pagespeed که در دستور زیر آماده است، فیلتر میباشد و برای دانلود باید از vpn یا فیلترشکن استفاده کنید.
مرحله دوم : کانفیگ و کامپایل Nginx به همراه Ngx_Pagespeed
5 - اکنون به دایرکتوری nginx-1.13.2 وارد شده و سورس Nginx را با اجرای دستور زیر کانفیگ میکنیم.
6 - سپس Nginx را همانند زیر کامپایل و نصب میکنیم.
7 - زمانیکه مرحله نصب کامل شد، همه symlink های لازم برای انجین ایکس را ایجاد میکنیم.
مرحله سوم : ایجاد فایل Unit انجین ایکس برای SystemD
8 - سپس، از آنجایی که در CentOS 7 سرویس systemd در حقیقت جایگزین سیستم init شده است، شما باید به صورت دستی فایل Unit انجین ایکس را ایجاد کنید.
ابتدا فایل /lib/systemd/system/nginx.service را ایجاد، و سپس فایل سرویس Nginx در systemd را کپی و در فایلی که ایجاد کردیم paste میکنیم.
به مسیر PIDFile و باینری Nginx که به هنگام کانفیگ و کامپایل Nginx تعریف کردید توجه داشته باشید، شما آنها را در متغییرهای مناسب در فایل Unit همانند زیر تعریف خواهید کرد.
فایل را ذخیره و از آن خارج شوید.
9 - در اینجا سرویس Nginx را start کنید و آنرا به منظور start شدن به هنگام Boot سیستم با استفاده از دستورات زیر فعال کنید.
مرحله چهارم : کانفیگ Nginx به همراه ماژول Pagespeed
10 - بعد از نصب Nginx، شما باید ماژول Ngx_Pagespeed را فعال کنید. کار را با ایجاد دایرکتوری که ماژول فایل ها را برای وب سایت شما cache خواهد کرد آغاز میکنیم و پرمیژن های مناسب را روی این دایرکتوری با دستورات زیر تعریف میکنیم.
11 - اکنون زمان فعال سازی ماژول Ngx_Pagespeed رسیده است، فایل کانفیگ انجین ایکس را باز کنید و خط های زیر را به آن اضافه کنید.
نکته : اگر شما هر گونه virtual host ی روی سرور کانفیگ کرده اید فراموش نکنید که بخش pagespeed بالا را به هر بلاک سرور اضافه کنید تا Ngx_Pagespeed را روی همه سایت ها فعال کنید.
خطوط کانفیگ Ngx_Pagespeed را درون بلاک Server اضافه کنید.
در زیر یک نمونه در حال کار از فایل کانفیگ Nginx را مشاهده میکنید که ماژول Ngx_Pagespeed در ویرچوال هاست پیش فرض فعال شده است.
12 - سپس، با اجرای دستور زیر مطمئن شوید که فایل کانفیگ Nginx عاری از هرگونه Error ی باشد، اگر همه چیز OK باشد خروجی شبیه به زیر مشاهده خواهید کرد.
13 - در نهایت سرور Nginx را برای اعمال تغییرات restart کنید.
مرحله پنجم : تست Nginx به همراه Ngx_Pagespeed
14 - برای اینکه از درست کارکردن Ngx_Pagespeed در ترکیب با Nginx مطمئن شویم باید در هدر X-Page-Speed موجود باشد.
اگر شما خروجی هدر بالا را مشاهده نکردید سپس مجدد به مرحله 11 برگردید و با دقت بیشتر دستورالعمل فعال سازی Ngx_Pagespeed با استفاده از مراحل بعدی کار را دنبال کنید.
ریپازیتوری Github Ngx_Pagespeed :
در این مقاله ما به شما نحوه نصب و کانفیگ Nginx به همراه ماژول Ngx_Pagespeed برای بهینه سازی و افزایش سرعت و عملکرد سایت و کاهش مدت زمان لود صفحه را نمایش دادیم.
به منظور امن کردن وب سرور انجین ایکس پیشنهاد میشود پست زیر را مطالعه کنید.
راهنمای امن کردن و بالا بردن سرعت عملکرد وب سرور انجین ایکس
همانند همیشه سوال و یا نظرات مرتبط به این پست را با ما به اشتراک بگذارید.
انجین ایکس یک سرور HTTP شناخته شده (قابل مقایسه با سرور HTTP آپاچی) است که بسیاری از سایت های روی وب از آن بهره میبرند و در حقیقت این وب سرور به دلیل ثبات و کارایی بالا بسیار معروف میباشد.
زمانیکه شما میخواهید تجربه کاربری روی سایت خود را افزایش دهید فاکتورهای مهم و گوناگونی هستند که باید بررسی کنید، شامل سرعت سایت و سرعت صفحه (همچنین با عنوان زمان لود صفحه نیز شناخته میشود). اگر سایت شما از Nginx استفاده میکند در نتیجه شما میتوانید برای دسترسی به هدف بالا از ابزار ngx_pagespeed استفاده کنید.
همچنین پیشنهاد میشود مطالعه کنید.
نصب Mod_Pagespeed برای بهبود کارایی سرور آپاچی (به زودی)
نصب Ngx_Pagespeed برای بالا بردن سرعت Nginx در اوبونتو و دبیان
ابزار Ngx_Pagespeed یک ماژول رایگان و اوپن سورس برای Nginx میباشد که برای افزایش سرعت سایت ها و کاهش زمان لود صفحه مورد استفاده قرار میگیرد. این ابزار به طور چشم گیری مدت زمانیکه طول میکشد تا کاربران محتوای سایت را ببینند و یا دیتایی در سایت وارد یا از آن دریافت کنند، را کاهش میدهد.
قابلیت های Ngx_Pagespeed
- پشتیبانی از HTTPS و کنترل URL
- بهینه سازی تصاویر : جدا سازی meta-data، تغییر سایز داینامیک، فشرده سازی مجدد
- معادله، تلفیق، ورودی و خروجی CSS و JavaScript
- resource پایین ورودی
- به تاخیر انداختن لود تصویر و JavaScript
- دوباره نویسی HTML
- تمدید مدت زمان Cache
- امکان config برای چندین سرور و تعداد زیاد دیگر
در این مقاله ما به شما نحوه نصب Nginx به همراه ngx_pagespeed و تست کامل روی RedHat/CentOS 7 نشان خواهیم داد.
مرحله اول : نصب Nginx از Source
1 - برای نصب انجین اکس به همراه ngx_pagespeed شما باید آنرا از سورس کامپایل کنید. در ابتدا تمام پکیج های مورد نیاز برای کامپایل Nginx از سورس کد را همانند زیر نصب کنید.
کد PHP:
# yum install wget gcc cmake unzip gcc-c++ pcre-devel zlib-devel
# yum group install "Development Tools"
2 - سپس source فایل آخرین ورژن Nginx (که در حال حاضر آخرین ورژن 1.13.2 میباشد) را با استفاده از دستور wget دانلود و سپس با استفاده از دستور tar همانند زیر آنرا extract کنید.
کد PHP:
# mkdir ~/downloads
# cd ~/downloads
# wget -c https://nginx.org/download/nginx-1.13.2.tar.gz
# tar -xzvf nginx-1.13.2.tar.gz
3 - سپس، فایل سورس ngx_pagespeed را دانلود و همانند زیر با استفاده از دستور unzip فایل را از حالت فشرده خارج کنید.
کد PHP:
# wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
# unzip v1.12.34.2-stable.zip
4 - اکنون به دایرکتوری اکسترکت شده ngx_pagespeed وارد شده و Library های بهینه سازی pagespeed به منظور کامپایل Nginx را دانلود کنید.
توجه : لینک library های بهینه سازی pagespeed که در دستور زیر آماده است، فیلتر میباشد و برای دانلود باید از vpn یا فیلترشکن استفاده کنید.
کد PHP:
# cd ngx_pagespeed-1.12.34.2-stable/
# wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
# tar -xvzf 1.12.34.2-x64.tar.gz
مرحله دوم : کانفیگ و کامپایل Nginx به همراه Ngx_Pagespeed
5 - اکنون به دایرکتوری nginx-1.13.2 وارد شده و سورس Nginx را با اجرای دستور زیر کانفیگ میکنیم.
کد PHP:
# cd ~/downloads/nginx-1.13.2
# ./configure --add-module=$HOME/downloads/ngx_pagespeed-1.12.34.2-stable/ --user=nobody --group=nobody --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid ${PS_NGX_EXTRA_FLAGS}
6 - سپس Nginx را همانند زیر کامپایل و نصب میکنیم.
کد PHP:
# make
# make install
7 - زمانیکه مرحله نصب کامل شد، همه symlink های لازم برای انجین ایکس را ایجاد میکنیم.
کد PHP:
# mkdir /etc/nginx
# ln -s /usr/local/nginx/conf/ /etc/nginx/
# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
مرحله سوم : ایجاد فایل Unit انجین ایکس برای SystemD
8 - سپس، از آنجایی که در CentOS 7 سرویس systemd در حقیقت جایگزین سیستم init شده است، شما باید به صورت دستی فایل Unit انجین ایکس را ایجاد کنید.
ابتدا فایل /lib/systemd/system/nginx.service را ایجاد، و سپس فایل سرویس Nginx در systemd را کپی و در فایلی که ایجاد کردیم paste میکنیم.
کد PHP:
# vi /lib/systemd/system/nginx.service
کد PHP:
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
فایل را ذخیره و از آن خارج شوید.
9 - در اینجا سرویس Nginx را start کنید و آنرا به منظور start شدن به هنگام Boot سیستم با استفاده از دستورات زیر فعال کنید.
کد PHP:
# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx
مرحله چهارم : کانفیگ Nginx به همراه ماژول Pagespeed
10 - بعد از نصب Nginx، شما باید ماژول Ngx_Pagespeed را فعال کنید. کار را با ایجاد دایرکتوری که ماژول فایل ها را برای وب سایت شما cache خواهد کرد آغاز میکنیم و پرمیژن های مناسب را روی این دایرکتوری با دستورات زیر تعریف میکنیم.
کد PHP:
# mkdir -p /var/ngx_pagespeed_cache
# chown -R nobody:nobody /var/ngx_pagespeed_cache
11 - اکنون زمان فعال سازی ماژول Ngx_Pagespeed رسیده است، فایل کانفیگ انجین ایکس را باز کنید و خط های زیر را به آن اضافه کنید.
نکته : اگر شما هر گونه virtual host ی روی سرور کانفیگ کرده اید فراموش نکنید که بخش pagespeed بالا را به هر بلاک سرور اضافه کنید تا Ngx_Pagespeed را روی همه سایت ها فعال کنید.
کد PHP:
# vi /etc/nginx/conf/nginx.conf
کد PHP:
# Pagespeed main settings
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# Ensure requests for pagespeed optimized resources go to the pagespeed
# handler and no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }
کد PHP:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
# Pagespeed main settings
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
# Ensure requests for pagespeed optimized resources go to the pagespeed
# handler and no extraneous headers get set.
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
location ~ "^/ngx_pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon" { }
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
12 - سپس، با اجرای دستور زیر مطمئن شوید که فایل کانفیگ Nginx عاری از هرگونه Error ی باشد، اگر همه چیز OK باشد خروجی شبیه به زیر مشاهده خواهید کرد.
کد PHP:
# nginx -t
13 - در نهایت سرور Nginx را برای اعمال تغییرات restart کنید.
کد PHP:
# systemctl restart nginx
مرحله پنجم : تست Nginx به همراه Ngx_Pagespeed
14 - برای اینکه از درست کارکردن Ngx_Pagespeed در ترکیب با Nginx مطمئن شویم باید در هدر X-Page-Speed موجود باشد.
کد PHP:
# curl -I -p http://localhost
اگر شما خروجی هدر بالا را مشاهده نکردید سپس مجدد به مرحله 11 برگردید و با دقت بیشتر دستورالعمل فعال سازی Ngx_Pagespeed با استفاده از مراحل بعدی کار را دنبال کنید.
ریپازیتوری Github Ngx_Pagespeed :
در این مقاله ما به شما نحوه نصب و کانفیگ Nginx به همراه ماژول Ngx_Pagespeed برای بهینه سازی و افزایش سرعت و عملکرد سایت و کاهش مدت زمان لود صفحه را نمایش دادیم.
به منظور امن کردن وب سرور انجین ایکس پیشنهاد میشود پست زیر را مطالعه کنید.
راهنمای امن کردن و بالا بردن سرعت عملکرد وب سرور انجین ایکس
همانند همیشه سوال و یا نظرات مرتبط به این پست را با ما به اشتراک بگذارید.