Nopeuta Nginx-suorituskykyä Ngx_Pagespeed-toiminnolla CentOS 7: ssä


Nginx [engine x] on ilmainen ja avoimen lähdekoodin, monitasoinen, tehokas verkkopalvelin ja käänteinen välityspalvelinohjelmisto, kirjoitettu C. tasapainottaja.

Nginx on tunnettu HTTP-palvelin (verrattavissa Apache HTTP -palvelimeen), joka käyttää useita sivustoja verkossa; se on suosittu korkean suorituskyvyn ja vakauden vuoksi.

On useita tärkeitä tekijöitä, jotka on otettava huomioon, kun haluat parantaa sivustosi käyttökokemusta, mukaan lukien sivuston nopeus ja sivun nopeus (tunnetaan myös nimellä sivun latausaika). Jos sivustoasi käyttää Nginx, voit käyttää ngx_pagespeed tähän tarkoitukseen.

Ngx_pagespeed on ilmainen ja avoimen lähdekoodin Nginx-moduuli, jota käytetään nopeuttamaan sivustoja ja pienentämään sivun latausaikaa. Se vähentää huomattavasti aikaa, joka kuluu käyttäjille sivustosi sisällön katseluun ja vuorovaikutukseen.

  • Tuki HTTPS: lle ja URL-osoitteiden hallinnalle.
  • Kuvan optimointi: metadatan poistaminen, dynaamisen koon muuttaminen, uudelleenpakkaaminen.
  • CSS: n ja JavaScriptin minimointi, ketjutus, rivitys ja hahmottelu.
  • Pieni resurssirivi.
  • Kuvan ja JavaScriptin lataamisen lykkääminen.
  • HTML: n uudelleenkirjoittaminen.
  • Välimuistin käyttöiän laajennus.
  • Mahdollistaa määrityksen useille palvelimille ja monille muille.

Tässä opetusohjelmassa näytetään, kuinka Nginx asennetaan ngx_pagespeed-toiminnolla, ja testataan koko asennus RHEL/CentOS 7: ssä.

Huomio: Debianin ja Ubuntu-käyttäjät voivat seurata tätä ohjetta Asenna Ngx_Pagespeed Nginxin suorituskyvyn parantamiseksi.

Vaihe 1: Asenna Nginx lähteestä

1. Nginxin asentaminen ngx_pagespeed-sovelluksella edellyttää sen kääntämistä lähteestä. Asenna ensin kaikki paketit, joita tarvitaan Nginxin kääntämiseen tällaisesta lähteestä.

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

2. Seuraavaksi hanki Nginx: n uusimman version lähdetiedostot (1.13.2 tämän kirjoituksen aikaan) wget-komennolla ja pura ladattu tervapallo alla olevan mukaisesti.

# 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. Lataa seuraavaksi ngx_pagespeed-lähdetiedostot ja pura pakatut tiedostot.

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

4. Siirry nyt purettuun ngx_pagespeed-hakemistoon ja pyydä PageSpeed-optimointikirjastoja kääntämään Nginx seuraavasti.

# 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

Vaihe 2: Määritä ja käännä Nginx Ngx_Pagespeed-sovelluksella

5. Siirry nyt hakemistoon nginx-1.13.2 ja määritä Nginx-lähde suorittamalla alla olevat komennot.

# 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. Seuraavaksi käännä ja asenna Nginx seuraavasti.

# make
# make install

7. Kun asennus on valmis, luo kaikki tarvittavat symlinkit Nginxiä varten.

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

Vaihe 3: Nginx-yksikkötiedoston luominen SystemD: lle

8. Seuraavaksi, koska systemd on CentOS 7: n init-järjestelmä, sinun on luotava sille Nginx-yksikkötiedosto manuaalisesti.

Luo tiedosto, luo tiedosto /lib/systemd/system/nginx.service ja tartu sitten NGINX systemd -palvelutiedostoon ja liitä yksikkötiedoston kokoonpano alla olevaan tiedostoon.

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

Ota huomioon PIDFile-tiedoston ja NGINX-binaarin sijainti, jotka määritit Nginxin määrityksen ja käännöksen yhteydessä, ja asetat ne yksikkötiedoston sopiviin muuttujiin alla esitetyllä tavalla:

[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

Tallenna tiedosto ja sulje se.

9. Käynnistä tässä vaiheessa nginx-palvelu keskimääräiseksi ajaksi ja salli se käynnistymään järjestelmän käynnistyksen yhteydessä suorittamalla alla olevat komennot.

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

Vaihe 4: Määritä Nginx Pagespeed-moduulilla

10. Kun Nginx on asennettu, sinun on seuraavaksi otettava käyttöön Ngx_pagespeed-moduuli. Aloita luomalla hakemisto, johon moduuli tallentaa välimuistin verkkosivustosi tiedostoille, ja asettamalla tarvittavat oikeudet tähän hakemistoon alla olevilla komennoilla.

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

11. Nyt on aika ottaa käyttöön Ngx_pagespeed-moduuli, avata Nginx-määritystiedosto ja lisätä alla olevat rivit.

Tärkeää: Jos olet määrittänyt minkä tahansa nginx-virtuaaliaseman palvelimelle, lisää yllä olevat sivunopeusdirektiivit kuhunkin palvelinlohkoon, jotta Ngx_pagespeed otetaan käyttöön kullakin sivustolla.

# vi /etc/nginx/nginx.conf

Lisää seuraavat Ngx_pagespeed-määritysrivit palvelinlohkoon.

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

Seuraava on toimiva esimerkki Nginx-määritystiedostosta, jonka Ngx_pagespeed on käytössä oletusarvoisessa virtuaaliasemassa.

#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. Varmista myöhemmin, että Nginx-määritystiedosto on virheetön suorittamalla alla oleva komento. Näet alla olevan lähdön, jos kaikki on hyvin.

# nginx -t

13. Käynnistä lopuksi Nginx-palvelin uudelleen, jotta muutokset astuvat voimaan.

# systemctl restart nginx

Vaihe 5: Nginxin testaaminen Ngx_pagespeed-toiminnolla

14. Jos haluat tietää, toimiiko Ngx_pagespeed nyt yhdessä Nginxin kanssa, sen on oltava X-Page-Speed-otsikossa.

# curl -I -p http://localhost

Jos et näe yllä olevaa otsikkoa, palaa sitten vaiheeseen 11 ja seuraa ohjeita huolellisesti, jotta Ngx-pagespeed otetaan käyttöön seuraavilla vaiheilla.

Ngx-pagespeed Github -tietovarasto: https://github.com/pagespeed/ngx_pagespeed

Siinä kaikki! Tässä opetusohjelmassa näytimme, kuinka Nginx asennetaan ja määritetään Ngx_pagespeed-moduulilla sivuston suorituskyvyn optimoimiseksi ja lyhentämiseksi.

Nginx-verkkopalvelimen suojaamiseksi lue tämä artikkeli - Ultimate Guide to Nginx Web Server -palvelimen suojaaminen, kovettaminen ja suorituskyvyn parantaminen.

Kuten aina, älä epäröi ilmoittaa meille tätä opetusohjelmaa koskevista kysymyksistä tai ajatuksista.