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.