Nopeuta Nginxin suorituskykyä Ngx_Pagespeedillä CentOS 7:ssä


Nginx [engine x] on ilmainen ja avoimen lähdekoodin, monialustainen, tehokas verkkopalvelin ja käänteinen välityspalvelinohjelmisto, joka on kirjoitettu C-kielellä. Se on myös tavallinen IMAP/POP3- ja TCP/UDP-välityspalvelin, ja sitä voidaan käyttää kuormituksen tasaajana.

Nginx on tunnettu HTTP-palvelin (verrattavissa Apache HTTP -palvelimeen), joka toimii useissa Web-sivustoissa; 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 sivustosi tarjoaa Nginx, voit käyttää ngx_pagespeed-toimintoa tähän tarkoitukseen.

Suositeltu luku: Asenna Mod_Pagespeed parantaaksesi Apache-palvelimen suorituskykyä

Ngx_pagespeed on ilmainen ja avoimen lähdekoodin Nginx-moduuli, jota käytetään parantamaan sivustojen nopeutta ja lyhentämään sivun latausaikaa. Se vähentää merkittävästi aikaa, joka kuluu käyttäjiltä sivustosi sisällön näkemiseen ja vuorovaikutukseen sen kanssa.

Ngx_pagespeed-ominaisuudet:

  • Tuki HTTPS:lle ja URL-ohjaukselle.
  • Kuvan optimointi: metatietojen poistaminen, dynaaminen koon muuttaminen, uudelleenpakkaus.
  • CSS- ja JavaScript-pienennys, ketjutus, rivitys ja ääriviivat.
  • Pieni resurssi inline.
  • Kuvan ja JavaScriptin latausta lykätään.
  • HTML:n uudelleenkirjoitus.
  • Välimuistin käyttöiän pidentäminen.
  • Mahdollistaa konfiguroinnin useille palvelimille ja monille muille.

Tässä opetusohjelmassa näytämme, kuinka Nginx asennetaan ngx_pagespeedillä ja testataan koko asennus RHEL/CentOS 7 -käyttöjärjestelmässä.

Huomio: Debian- ja Ubuntu-käyttäjät voivat noudattaa tätä opasta asentaakseen Ngx_Pagespeedin parantaakseen Nginxin suorituskykyä.

Vaihe 1: Asenna Nginx lähteestä

1. Jotta voit asentaa Nginxin ja ngx_pagespeed, sinun on käännettävä se lähteestä. Asenna ensin kaikki Nginxin kääntämiseen tarvittavat paketit tällaisesta lähteestä.

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

2. Hanki seuraavaksi Nginxin uusimman version lähdetiedostot (1.13.2 tätä kirjoitettaessa) wget-komennolla ja pura ladattu tar-pallo alla kuvatulla tavalla. .

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 hanki PageSpeed-optimointikirjastot 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_Pagespeedillä

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. Käännä ja asenna seuraavaksi Nginx seuraavasti.

make
make install

7. Kun asennus on valmis, luo kaikki tarvittavat symbolilinkit Nginxille.

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 init-järjestelmä CentOS 7:ssä, sinun on luotava Nginx-yksikkö manuaalisesti tiedosto siitä.

Luo ensin tiedosto /lib/systemd/system/nginx.service ja nappaa sitten NGINX systemd -palvelutiedosto ja liitä yksikkötiedoston asetukset alla olevaan tiedostoon.

vi /lib/systemd/system/nginx.service

Ota huomioon PIDFile- ja NGINX-binaarin sijainti, jotka asetit Nginxiä määrittäessäsi ja kääntäessäsi. Asetat ne yksikkötiedoston asianmukaisiin muuttujiin alla olevan kuvan mukaisesti. :

[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 toistaiseksi ja ota se käyttöö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, jossa moduuli tallentaa verkkosivustosi tiedostot välimuistiin, ja aseta tarvittavat käyttöoikeudet tälle hakemistolle alla olevilla komennoilla.

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

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

Tärkeää: Jos olet määrittänyt nginx-virtuaaliisäntiä palvelimelle, lisää yllä olevat pagespeed-ohjeet jokaiseen palvelinlohkoon ottaaksesi Ngx_pagespeedin käyttöön jokaisessa sivustossa.

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

Seuraavassa on toimiva esimerkki Nginx-määritystiedostosta, jossa Ngx_pagespeed on käytössä oletusvirtuaalisessa isännässä.

#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 sen jälkeen, että Nginx-määritystiedosto on virheetön suorittamalla alla oleva komento. Näet tulosteen alla, jos kaikki on hyvin.

nginx -t

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

systemctl restart nginx

Vaihe 5: Nginxin testaus Ngx_pagespeedillä

14. Jotta voit tietää, toimiiko Ngx_pagespeed nyt yhdessä Nginxin kanssa, sen täytyy näkyä X-Page-Speed-otsikossa.

curl -I -p http://localhost

Jos et näe yllä olevaa otsikkoa, palaa vaiheeseen 11 ja seuraa tarkasti ohjeita ottaaksesi Ngx-pagespeed käyttöön seuraavien vaiheiden kanssa.

Ngx-pagespeed Githubin arkisto: 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 parantamiseksi sekä sivun latausajan lyhentämiseksi.

Voit suojata Nginx-verkkopalvelimen lukemalla tämän artikkelin – Ultimate Guide to Secure, Harden and Improve Performance of Nginx Web Server.

Kuten aina, älä epäröi kertoa meille mitä tahansa tätä opetusohjelmaa koskevia kysymyksiä tai ajatuksia.