Pagpadali sa Nginx Performance sa Ngx_Pagespeed sa CentOS 7
Ang Nginx [engine x] usa ka libre ug open-source, cross-platform, gamhanan nga web server ug reverse proxy software nga gisulat sa C. Usa usab kini ka standard nga IMAP/POP3 ug TCP/UDP proxy server, ug mahimong gamiton isip load. tigbalanse.
Ang Nginx usa ka ilado nga HTTP server (itandi sa Apache HTTP server) nga nagpalihok sa daghang mga site sa web; sikat kini tungod sa taas nga performance ug kalig-on niini.
Adunay lain-laing importante nga mga butang nga ikonsiderar kung gusto nimo nga pauswagon ang kasinatian sa gumagamit sa imong site, lakip ang katulin sa site ug katulin sa panid (nailhan usab nga oras sa pagkarga sa panid). Kung ang imong site gipadagan sa Nginx, nan mahimo nimong gamiton ang ngx_pagespeed alang niini nga katuyoan.
Ang Ngx_pagespeed usa ka libre ug bukas nga gigikanan nga module sa Nginx nga gigamit alang sa pagpausbaw sa katulin sa mga site ingon man sa pag-scale sa oras sa pagkarga sa panid. Mahinungdanon nga gipamenos niini ang oras nga gikinahanglan alang sa mga tiggamit nga makakita ug makig-uban sa sulud sa imong site.
- Suporta para sa HTTPS ug pagkontrol sa URL.
- Pag-optimize sa imahe: pagtangtang sa meta-data, dinamikong pagbag-o, pag-recompression.
- CSS & JavaScript minification, concatenation, inlining, ug outlining.
- Gamay nga kapanguhaan inlining.
- Paglangan sa hulagway ug pagkarga sa JavaScript.
- Pagsulat pag-usab sa HTML.
- Cache tibuok kinabuhi nga extension.
- Gitugotan ang pag-configure alang sa daghang mga server ug daghan pa.
Sa kini nga panudlo, ipakita namon kung giunsa ang pag-install sa Nginx sa ngx_pagespeed ug sulayan ang tibuuk nga pag-install sa RHEL/CentOS 7.
Atensyon: Ang mga tiggamit sa Debian ug Ubuntu makasunod niini nga giya sa Pag-instalar sa Ngx_Pagespeed aron Mapauswag ang Pagganap sa Nginx.
Lakang 1: I-install ang Nginx gikan sa Tinubdan
1. Aron ma-install ang Nginx gamit ang ngx_pagespeed kinahanglan nimo nga i-compile kini gikan sa gigikanan. Una i-install ang tanan nga mga pakete nga gikinahanglan alang sa pag-compile sa Nginx gikan sa gigikanan nga sama niini.
# yum install wget gcc cmake unzip gcc-c++ pcre-devel zlib-devel OR # yum group install "Development Tools"
2. Sunod, kuhaa ang mga source file sa pinakabag-o nga bersyon sa Nginx (1.13.2 sa panahon niini nga pagsulat) gamit ang wget command ug kuhaa ang na-download nga tar ball sama sa ubos.
# 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. Sunod, i-download ang ngx_pagespeed source files ug unzip compressed files.
# wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip # unzip v1.12.34.2-stable.zip
4. Karon mobalhin ngadto sa unzipped ngx_pagespeed nga direktoryo ug kuhaa ang PageSpeed optimization library aron ma-compile ang Nginx sama sa mosunod.
# 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
Lakang 2: I-configure ug I-compile ang Nginx sa Ngx_Pagespeed
5. Karon adto sa nginx-1.13.2 direktoryo, ug i-configure ang Nginx tinubdan pinaagi sa pagpadagan sa mga sugo sa ubos.
# 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. Sunod, i-compile ug i-install ang Nginx ingon sa mosunod.
# make # make install
7. Sa diha nga ang proseso sa pag-instalar kompleto na, paghimo sa tanan nga gikinahanglan nga mga symlink alang sa Nginx.
# ln -s /usr/local/nginx/conf/ /etc/nginx/ # ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
Lakang 3: Paghimo Nginx Unit File alang sa SystemD
8. Sunod, tungod kay ang systemd mao ang init nga sistema sa CentOS 7, kinahanglan nimo nga mano-mano ang paghimo sa Nginx unit file alang niini.
Una, paghimo sa file /lib/systemd/system/nginx.service, unya kuhaa ang NGINX systemd service file idikit ang unit file configuration sa ubos nga file.
# vi /lib/systemd/system/nginx.service
Timan-i ang lokasyon sa PIDFile ug ang NGINX binary nga imong gitakda samtang nag-configure ug nag-compile sa Nginx, imong ibutang kini sa angay nga mga variable sa unit file sama sa gipakita sa ubos:
[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
I-save ang file ug isira kini.
9. Niini nga punto, sugdi ang serbisyo sa nginx alang sa gidugayon nga panahon ug himoa kini nga magsugod sa boot sa system pinaagi sa pagpadagan sa mga sugo sa ubos.
# systemctl start nginx # systemctl enable nginx # systemctl status nginx
Lakang 4: I-configure ang Nginx Uban sa Pagespeed Module
10. Sa pag-instalar sa Nginx, sunod, kinahanglan nimo nga ma-enable ang Ngx_pagespeed module. Pagsugod pinaagi sa paghimo og direktoryo diin ang module mag-cache sa mga file para sa imong website ug magbutang sa angay nga mga permiso niini nga direktoryo uban sa mga sugo sa ubos.
# mkdir -p /var/ngx_pagespeed_cache # chown -R nobody:nobody /var/ngx_pagespeed_cache
11. Karon na ang panahon aron mahimo ang Ngx_pagespeed module, ablihi ang Nginx configuration file ug idugang ang mga linya sa ubos.
Importante: Kung na-configure nimo ang bisan unsang nginx virtual host sa server, idugang ang mga direktiba sa pagespeed sa ibabaw sa matag block sa server aron mahimo ang Ngx_pagespeed sa matag site.
# vi /etc/nginx/nginx.conf
Idugang ang pagsunod sa Ngx_pagespeed nga mga linya sa pagsumpo sulod sa block sa server.
# 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" { }
Ang mosunod mao ang usa ka nagtrabaho nga panig-ingnan sa Nginx configuration file uban sa Ngx_pagespeed enabled sa default virtual host.
#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. Pagkahuman, siguroha nga ang Nginx config file walay sayop pinaagi sa pagpadagan sa command sa ubos, imong makita ang output sa ubos kung maayo ang tanan.
# nginx -t
13. Sa kataposan, i-restart ang Nginx server para ma-epekto ang mga kausaban.
# systemctl restart nginx
Lakang 5: Pagsulay sa Nginx sa Ngx_pagespeed
14. Aron mahibal-an kung ang Ngx_pagespeed karon nagtrabaho kauban sa Nginx, kini kinahanglan nga makita sa X-Page-Speed header.
# curl -I -p http://localhost
Kung napakyas ka nga makita ang ulohan sa ibabaw, unya balik sa lakang 11 ug sunda pag-ayo ang mga panudlo aron mahimo ang Ngx-pagespeed sa mga sunod nga lakang.
Ngx-pagespeed Github repository: https://github.com/pagespeed/ngx_pagespeed
Mao ra kana! Sa kini nga panudlo, gipakita namon kung giunsa ang pag-install ug pag-configure sa Nginx gamit ang Ngx_pagespeed module aron ma-optimize ug mapaayo ang pasundayag sa site ug makunhuran ang oras sa pagkarga sa panid.
Aron ma-secure ang Nginx web server, basaha kini nga artikulo - Ang Katapusan nga Giya sa Secure, Harden ug Improve Performance sa Nginx Web Server.
Sama sa kanunay, ayaw pagpanuko nga ipahibalo kanamo ang bisan unsang mga pangutana o hunahuna bahin sa kini nga panudlo.