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.