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.