„CentOS 7“ paspartinkite „Nginx“ našumą naudodami „Ngx_Pagespeed“
„Nginx“ [variklis x] yra nemokama ir atviro kodo, daugiaplatformė, galinga žiniatinklio serveris ir atvirkštinio tarpinio serverio programinė įranga, parašyta C. Tai taip pat yra standartinis IMAP/POP3 ir TCP/UDP tarpinis serveris ir gali būti naudojamas kaip apkrova. balansuotojas.
„Nginx“ yra gerai žinomas HTTP serveris (palyginamas su „Apache“ HTTP serveriu), valdantis daugybę interneto svetainių; jis yra populiarus dėl didelio našumo ir stabilumo.
Norint pagerinti vartotojo patirtį svetainėje, reikia atsižvelgti į įvairius svarbius veiksnius, įskaitant svetainės greitį ir puslapio greitį (dar vadinamą puslapio įkėlimo laiku). Jei jūsų svetainę valdo „Nginx“, šiam tikslui galite naudoti „ngx_pagespeed“.
„Ngx_pagespeed“ yra nemokamas ir atviro kodo „Nginx“ modulis, naudojamas padidinti svetainių greitį ir sumažinti puslapio įkėlimo laiką. Tai žymiai sutrumpina laiką, per kurį vartotojai mato ir sąveikauja su jūsų svetainės turiniu.
- HTTPS ir URL valdymo palaikymas.
- Vaizdo optimizavimas: metaduomenų pašalinimas, dinaminis dydžio keitimas, perkompresavimas.
- CSS ir „JavaScript“ suskaidymas, sujungimas, įtraukimas ir išdėstymas.
- Mažas šaltinis.
- Atidedamas atvaizdo ir „JavaScript“ įkėlimas.
- HTML perrašymas.
- Talpyklos tarnavimo laiko pratęsimas.
- Leidžia konfigūruoti kelis serverius ir daugelį kitų.
Šioje pamokoje parodysime, kaip įdiegti „Nginx“ su „ngx_pagespeed“, ir išbandysime visą diegimą „RHEL/CentOS 7“.
Dėmesio: „Debian“ ir „Ubuntu“ vartotojai gali sekti šį vadovą, norėdami įdiegti „Ngx_Pagespeed“, kad pagerintumėte „Nginx“ našumą.
1 žingsnis: įdiekite „Nginx“ iš šaltinio
1. Norėdami įdiegti „Nginx“ naudodami „ngx_pagespeed“, turite jį sukompiliuoti iš šaltinio. Pirmiausia įdiekite visus paketus, reikalingus „Nginx“ kompiliuoti iš tokio šaltinio.
# yum install wget gcc cmake unzip gcc-c++ pcre-devel zlib-devel OR # yum group install "Development Tools"
2. Tada naudodami komandą wget gaukite naujausios „Nginx“ versijos (1.13.2 šio rašymo metu) šaltinio failus ir išskleiskite atsisiųstą deguto kamuolį.
# 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. Tada atsisiųskite ngx_pagespeed šaltinio failus ir išpakuokite suglaudintus failus.
# wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip # unzip v1.12.34.2-stable.zip
4. Dabar pereikite į neišpakuotą katalogą „ngx_pagespeed“ ir nurodykite, kad „PageSpeed“ optimizavimo bibliotekos sudarytų „Nginx“.
# 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
2 žingsnis: konfigūruokite ir kompiliuokite „Nginx“ naudodami „Ngx_Pagespeed“
5. Dabar eikite į katalogą „nginx-1.13.2“ ir sukonfigūruokite „Nginx“ šaltinį vykdydami toliau pateiktas komandas.
# 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. Tada sukompiliuokite ir įdiekite „Nginx“ taip.
# make # make install
7. Baigę diegimo procesą, sukurkite visas reikalingas „Nginx“ nuorodas.
# ln -s /usr/local/nginx/conf/ /etc/nginx/ # ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
3 žingsnis: „Nginx“ vieneto failo, skirto „SystemD“, kūrimas
8. Be to, kadangi „systemd“ yra „CentOS 7“ pradinė sistema, turite rankiniu būdu sukurti jai „Nginx“ vieneto failą.
Sukurkite failą /lib/systemd/system/nginx.service, tada paimkite „NGINX systemd“ paslaugos failą, įklijuokite vieneto failo konfigūraciją į žemiau esantį failą.
# vi /lib/systemd/system/nginx.service
Atkreipkite dėmesį į PIDFile ir dvejetainio NGINX vietą, kurią nustatėte konfigūruodami ir kompiliuodami „Nginx“, juos nustatysite atitinkamuose vieneto failo kintamuosiuose, kaip parodyta žemiau:
[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
Išsaugokite failą ir uždarykite jį.
9. Šiuo metu paleiskite „nginx“ paslaugą vidutiniam laikui ir įgalinkite ją paleisti iš sistemos paleidimo, vykdydami toliau pateiktas komandas.
# systemctl start nginx # systemctl enable nginx # systemctl status nginx
4 žingsnis: konfigūruokite „Nginx“ naudodami „Pagespeed“ modulį
10. Įdiegę „Nginx“, turite įjungti „Ngx_pagespeed“ modulį. Pirmiausia sukurkite katalogą, kuriame modulis talpins jūsų svetainės failus ir nustatykite atitinkamas teises šiame kataloge naudodamiesi toliau pateiktomis komandomis.
# mkdir -p /var/ngx_pagespeed_cache # chown -R nobody:nobody /var/ngx_pagespeed_cache
11. Dabar atėjo laikas įjungti „Ngx_pagespeed“ modulį, atidaryti „Nginx“ konfigūracijos failą ir pridėti toliau nurodytas eilutes.
Svarbu: jei serveryje sukonfigūravote bet kuriuos „nginx“ virtualiuosius pagrindinius kompiuterius, prie kiekvieno serverio bloko pridėkite aukščiau nurodytas puslapių greičio direktyvas, kad kiekvienoje svetainėje įgalintumėte „Ngx_pagespeed“.
# vi /etc/nginx/nginx.conf
Serverio bloke pridėkite šias „Ngx_pagespeed“ konfigūracijos eilutes.
# 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" { }
Toliau pateiktas veikiantis „Nginx“ konfigūracijos failo su įgalintu „Ngx_pagespeed“ numatytame virtualiame pagrindiniame kompiuteryje pavyzdys.
#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. Po to įsitikinkite, kad „Nginx“ konfigūracijos faile nėra klaidų, vykdydami žemiau esančią komandą. Jei viskas gerai, pamatysite išvestį žemiau.
# nginx -t
13. Galiausiai iš naujo paleiskite „Nginx“ serverį, kad pakeitimai įsigaliotų.
# systemctl restart nginx
5 žingsnis: „Nginx“ testavimas naudojant „Ngx_pagespeed“
14. Norėdami sužinoti, ar „Ngx_pagespeed“ dabar veikia kartu su „Nginx“, jis turi būti rodomas antraštėje „X-Page-Speed“.
# curl -I -p http://localhost
Jei nematėte pirmiau pateiktos antraštės, grįžkite prie 11 veiksmo ir atidžiai vykdykite instrukcijas, kad įgalintumėte „Ngx-pagespeed“ su tolesniais veiksmais.
„Ngx-pagespeed“ „Github“ saugykla: https://github.com/pagespeed/ngx_pagespeed
Tai viskas! Šioje pamokoje parodėme, kaip įdiegti ir sukonfigūruoti „Nginx“ su „Ngx_pagespeed“ moduliu, siekiant optimizuoti ir pagerinti svetainės našumą ir sutrumpinti puslapio įkėlimo laiką.
Norėdami apsaugoti „Nginx“ tinklo serverį, perskaitykite šį straipsnį - „Nginx“ tinklo serverio saugaus, grūdinto ir našumo gerinimo vadovas.
Kaip visada, nedvejodami praneškite mums apie šią pamoką su klausimais ar mintimis.