Kiirendage Nginxi jõudlust rakendusega Ngx_Pagespeed CentOS 7-l


Nginx [mootor x] on C-ga kirjutatud tasuta ja avatud lähtekoodiga platvormidevaheline võimas veebiserver ja vastupidine puhverserver. See on ka tavaline IMAP/POP3 ja TCP/UDP puhverserver ning seda saab kasutada koormusena tasakaalustaja.

Nginx on tuntud HTTP-server (võrreldav Apache HTTP-serveriga), mis toetab arvukaid veebisaite; see on populaarne oma suure jõudluse ja stabiilsuse tõttu.

Oma saidi kasutajakogemuse parandamiseks tuleb arvestada mitmete oluliste teguritega, sealhulgas saidi kiirus ja lehekiirus (tuntud ka kui lehe laadimisaeg). Kui teie sait töötab Nginxi toel, saate selleks kasutada ngx_pagespeed.

Ngx_pagespeed on tasuta ja avatud lähtekoodiga Nginxi moodul, mida kasutatakse nii saitide kiiruse suurendamiseks kui ka lehe laadimisaja vähendamiseks. See vähendab oluliselt aega, mis kulub kasutajatel teie saidi sisu nägemiseks ja sellega suhtlemiseks.

  • HTTPS-i ja URL-i juhtimise tugi.
  • Pildi optimeerimine: metaandmete eemaldamine, dünaamiline suuruse muutmine, tihendamine.
  • CSS-i ja JavaScripti minimeerimine, liitmine, kaasamine ja ülevaatamine.
  • Väike ressursside lisamine.
  • Pildi ja JavaScripti laadimise edasilükkamine.
  • HTML-i ümberkirjutamine.
  • vahemälu eluea laiendus.
  • Võimaldab seadistada mitut serverit ja paljusid teisi.

Selles õpetuses näitame, kuidas installida Nginx rakendusega ngx_pagespeed ja testida kogu installimist RHEL/CentOS 7-s.

Tähelepanu: Debiani ja Ubuntu kasutajad saavad järgida seda juhendit Ngx_Pagespeedi installimiseks Nginxi jõudluse parandamiseks.

1. samm: installige Nginx allikast

1. Nginxi installimiseks rakendusega ngx_pagespeed peate selle kompileerima allikast. Kõigepealt installige kõik Nginxi kompileerimiseks vajalikud paketid sellisest allikast.

# yum install wget gcc cmake unzip gcc-c++ pcre-devel zlib-devel
OR
# yum group install "Development Tools"

2. Seejärel hankige käsu wget abil Nginxi uusima versiooni (1.13.2 kirjutamise ajal) lähtefailid ja tõmmake allalaaditud tõrvapall alla.

# 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. Järgmisena laadige alla algfailid ngx_pagespeed ja pakkige tihendatud failid lahti.

# wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
# unzip v1.12.34.2-stable.zip

4. Nüüd liikuge lahtipakitud kataloogi ngx_pagespeed ja laske PageSpeedi optimeerimise teekidel Nginx kompileerida järgmiselt.

# 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

2. samm: konfigureerige ja kompileerige Nginx rakendusega Ngx_Pagespeed

5. Nüüd minge kataloogi nginx-1.13.2 ja konfigureerige Nginxi allikas, käivitades allolevad käsud.

# 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. Järgmisena kompileerige ja installige Nginx järgmiselt.

# make
# make install

7. Kui installiprotsess on lõppenud, looge Nginxile kõik vajalikud sümbolid.

# ln -s /usr/local/nginx/conf/ /etc/nginx/
# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

3. samm: SystemD jaoks Nginxi üksusfaili loomine

8. Järgmisena, kuna systemd on CentOS 7 algussüsteem, peate selle jaoks käsitsi looma Nginxi üksusfaili.

Fisrt, looge fail /lib/systemd/system/nginx.service, seejärel haarake teenuse fail NGINX systemd ja kleepige üksusfaili konfiguratsioon allolevasse faili.

# vi /lib/systemd/system/nginx.service

Pange tähele PIDFile'i ja NGINX-binaari asukohta, mille määrasite Nginxi seadistamisel ja kompileerimisel, määrate need ühikfaili asjakohastesse muutujatesse, nagu allpool näidatud:

[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

Salvestage fail ja sulgege see.

9. Sel hetkel käivitage nginx-teenus keskmiseks ajaks ja lubage see käivitada süsteemi käivitamisel, käivitades alltoodud käsud.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx

4. samm: konfigureerige Nginx Pagespeed mooduliga

10. Kui Nginx on installitud, peate lubama mooduli Ngx_pagespeed. Alustage kataloogi loomisega, kus moodul vahemällu salvestab teie veebisaidi failid, ja määrake sellele kataloogile sobivad õigused allolevate käskudega.

# mkdir -p /var/ngx_pagespeed_cache
# chown -R nobody:nobody /var/ngx_pagespeed_cache

11. Nüüd on aeg lubada moodul Ngx_pagespeed, avada Nginxi konfiguratsioonifail ja lisada allolevad read.

Tähtis: kui olete serveris konfigureerinud mõne nginxi virtuaalse masina, lisage ülaltoodud lehtede kiiruse direktiivid igasse serveri plokki, et lubada Ngx_pagespeed igal saidil.

# vi /etc/nginx/nginx.conf

Lisage serveriplokki järgmised konfiguratsiooniread Ngx_pagespeed.

# 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" { }

Järgnevalt on toodud näide Nginxi konfiguratsioonifailist, mille vaikimisi virtuaalhostis on lubatud Ngx_pagespeed.

#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. Pärast seda veenduge, et Nginxi konfiguratsioonifail on tõrgeteta, käivitades alloleva käsu. Kui kõik on korras, näete allpool väljundit.

# nginx -t

13. Lõpuks taaskäivitage Nginxi server muudatuste jõustumiseks.

# systemctl restart nginx

5. samm: Nginxi testimine rakendusega Ngx_pagespeed

14. Et teada saada, kas Ngx_pagespeed töötab nüüd koos Nginxiga, peab see ilmuma päises X-Page-Speed.

# curl -I -p http://localhost

Kui te ei näe ülaltoodud päist, minge tagasi 11. sammu juurde ja järgige hoolikalt juhiseid, et lubada Ngx-pagespeed koos järgnevate toimingutega.

Ngx-pagespeed Githubi hoidla: https://github.com/pagespeed/ngx_pagespeed

See on kõik! Selles õpetuses näitasime, kuidas Nginxi koos Ngx_pagespeed mooduliga installida ja konfigureerida, et optimeerida ja parandada saidi jõudlust ning vähendada lehe laadimisaega.

Nginxi veebiserveri turvamiseks lugege seda artiklit - Nginxi veebiserveri turvalisuse, karastamise ja jõudluse parandamise ülim juhend.

Nagu alati, andke meile teada selle õpetuse kohta käivatest küsimustest või mõtetest.