Zoeken op website

Versnel de Nginx-prestaties met Ngx_Pagespeed op CentOS 7


Nginx [engine x] is een gratis en open-source, platformonafhankelijke, krachtige webserver en reverse proxy-software geschreven in C. Het is ook een standaard IMAP/POP3- en TCP/UDP-proxyserver, en kan worden gebruikt als load balancer.

Nginx is een bekende HTTP-server (vergelijkbaar met de Apache HTTP-server) die talloze sites op internet aandrijft; het is populair vanwege zijn hoge prestaties en stabiliteit.

Er zijn verschillende belangrijke factoren waarmee u rekening moet houden als u de gebruikerservaring op uw site wilt verbeteren, waaronder sitesnelheid en paginasnelheid (ook wel de laadtijd van de pagina genoemd). Als uw site wordt aangedreven door Nginx, kunt u hiervoor ngx_pagespeed gebruiken.

Voorgesteld lezen: Installeer Mod_Pagespeed om de prestaties van de Apache-server te verbeteren

Ngx_pagespeed is een gratis en open source Nginx-module die wordt gebruikt om de snelheid van sites te verbeteren en de laadtijd van pagina's te verkorten. Het verkort aanzienlijk de tijd die gebruikers nodig hebben om de inhoud van uw site te zien en ermee te communiceren.

Ngx_pagespeed-functies:

  • Ondersteuning voor HTTPS en URL-controle.
  • Beeldoptimalisatie: metagegevens verwijderen, dynamisch formaat wijzigen, hercompressie.
  • CSS- en JavaScript-minificatie, aaneenschakeling, inlining en contouren.
  • Inlining van kleine bronnen.
  • Het laden van afbeeldingen en JavaScript wordt uitgesteld.
  • Herschrijven van HTML.
  • Levensduurverlenging van cache.
  • Maakt configuratie voor meerdere servers en vele andere mogelijk.

In deze tutorial laten we zien hoe je Nginx installeert met ngx_pagespeed en hoe je de hele installatie test op RHEL/CentOS 7.

Let op: Debian- en Ubuntu-gebruikers kunnen deze handleiding volgen om Ngx_Pagespeed te installeren om de Nginx-prestaties te verbeteren.

Stap 1: Installeer Nginx vanaf de bron

1. Om Nginx met ngx_pagespeed te installeren, moet je het compileren vanaf de broncode. Installeer eerst alle pakketten die nodig zijn voor het compileren van Nginx vanaf de broncode, zoals deze.

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

2. Verkrijg vervolgens de bronbestanden van de nieuwste versie van Nginx (1.13.2 op het moment van schrijven) met behulp van de wget-opdracht en pak de gedownloade tar-ball uit, zoals hieronder .

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. Download vervolgens de ngx_pagespeed-bronbestanden en pak de gecomprimeerde bestanden uit.

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

4. Ga nu naar de uitgepakte map ngx_pagespeed en zorg ervoor dat de PageSpeed-optimalisatiebibliotheken Nginx als volgt compileren.

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

Stap 2: Configureer en compileer Nginx met Ngx_Pagespeed

5. Ga nu naar de map nginx-1.13.2 en configureer de Nginx-bron door de onderstaande opdrachten uit te voeren.

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. Compileer en installeer vervolgens Nginx als volgt.

make
make install

7. Wanneer het installatieproces voltooid is, maakt u alle benodigde symlinks voor Nginx.

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

Stap 3: Nginx Unit-bestand maken voor SystemD

8. Omdat systemd het init systeem is in CentOS 7, moet je vervolgens handmatig de Nginx-eenheid maken daarvoor een dossier indienen.

Maak eerst het bestand /lib/systemd/system/nginx.service en pak vervolgens het NGINX systemd-servicebestand en plak de configuratie van het eenheidsbestand in het onderstaande bestand.

vi /lib/systemd/system/nginx.service

Noteer de locatie van het PIDFile en het NGINX binaire bestand dat u instelt tijdens het configureren en compileren van Nginx. U stelt ze in de juiste variabelen in het eenheidsbestand in, zoals hieronder weergegeven :

[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

Sla het bestand op en sluit het.

9. Start nu de nginx service voorlopig en schakel deze in om te starten bij het opstarten van het systeem door de onderstaande opdrachten uit te voeren.

systemctl start nginx
systemctl enable nginx
systemctl status nginx

Stap 4: Configureer Nginx met Pagespeed-module

10. Als Nginx is geïnstalleerd, moet je vervolgens de Ngx_pagespeed module inschakelen. Begin met het maken van een map waar de module de bestanden voor uw website in de cache opslaat en stel de juiste machtigingen voor deze map in met de onderstaande opdrachten.

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

11. Nu is het tijd om de Ngx_pagespeed module in te schakelen, het Nginx-configuratiebestand te openen en de onderstaande regels toe te voegen.

Belangrijk: als je virtuele nginx-hosts op de server hebt geconfigureerd, voeg dan de bovenstaande pagespeed-richtlijnen toe aan elk serverblok om Ngx_pagespeed op elke site in te schakelen.

vi /etc/nginx/nginx.conf

Voeg de volgende Ngx_pagespeed configuratieregels toe binnen het serverblok.

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

Het volgende is een werkend voorbeeld van het Nginx-configuratiebestand met Ngx_pagespeed ingeschakeld in de standaard virtuele 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. Zorg er daarna voor dat het Nginx-configuratiebestand geen fouten bevat door de onderstaande opdracht uit te voeren. Als alles goed is, ziet u de onderstaande uitvoer.

nginx -t

13. Start ten slotte de Nginx-server opnieuw op om de wijzigingen door te voeren.

systemctl restart nginx

Stap 5: Nginx testen met Ngx_pagespeed

14. Om te weten of Ngx_pagespeed nu samenwerkt met Nginx, moet het verschijnen in de X-Page-Speed header.

curl -I -p http://localhost

Mocht u bovenstaande header niet hebben gezien, ga dan terug naar stap 11 en volg zorgvuldig de instructies om Ngx-pagespeed in te schakelen met de daaropvolgende stappen.

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

Dat is alles! In deze zelfstudie hebben we laten zien hoe u Nginx kunt installeren en configureren met de Ngx_pagespeed-module om de siteprestaties te optimaliseren en te verbeteren en de laadtijd van de pagina te verminderen.

Om de Nginx-webserver te beveiligen, leest u dit artikel – De ultieme gids voor het beveiligen, versterken en verbeteren van de prestaties van de Nginx-webserver.

Aarzel zoals altijd niet om ons eventuele vragen of gedachten over deze tutorial te laten weten.