Flýttu Nginx árangur með Ngx_Pagespeed á CentOS 7


Nginx [engine x] er ókeypis og opinn uppspretta, þvert á vettvang, öflugur vefþjónn og öfugur proxy-hugbúnaður skrifaður í C. Hann er einnig venjulegur IMAP/POP3 og TCP/UDP proxy-þjónn og hægt að nota hann sem hleðslu. jafnvægismaður.

Nginx er vel þekktur HTTP netþjónn (sambærilegur við Apache HTTP miðlara) sem knýr fjölmargar síður á vefnum; það er vinsælt fyrir mikla afköst og stöðugleika.

Það eru ýmsir mikilvægir þættir sem þarf að hafa í huga þegar þú vilt bæta notendaupplifun á síðunni þinni, þar á meðal síðuhraði og síðuhraða (einnig þekktur sem hleðslutími síðu). Ef síðan þín er knúin af Nginx, þá geturðu notað ngx_pagespeed í þessum tilgangi.

Ngx_pagespeed er ókeypis og opinn uppspretta Nginx eining sem notuð er til að auka hraða vefsvæða ásamt því að minnka hleðslutíma síðunnar. Það dregur verulega úr þeim tíma sem það tekur notendur að sjá og hafa samskipti við innihald síðunnar þinnar.

  • Stuðningur við HTTPS og vefslóðastýringu.
  • Fínstilling mynd: fjarlægja lýsigögn, kraftmikil stærðarbreyting, endurþjöppun.
  • CSS og JavaScript minnkun, samtenging, innfelling og útlínur.
  • Lítil auðlind.
  • Fresta hleðslu myndar og JavaScript.
  • Endurskrifun HTML.
  • Líftímalenging skyndiminni.
  • Leyfir stillingar fyrir marga netþjóna og marga aðra.

Í þessari kennslu munum við sýna hvernig á að setja upp Nginx með ngx_pagespeed og prófa alla uppsetninguna á RHEL/CentOS 7.

Athugið: Debian og Ubuntu notendur geta fylgst með þessari handbók til að setja upp Ngx_Pagespeed til að bæta Nginx árangur.

Skref 1: Settu upp Nginx frá Source

1. Til að setja upp Nginx með ngx_pagespeed þarf að setja það saman frá uppruna. Settu fyrst upp alla pakka sem þarf til að setja saman Nginx frá uppruna eins og þessum.

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

2. Næst skaltu fá upprunaskrár af nýjustu útgáfunni af Nginx (1.13.2 þegar þetta er skrifað) með því að nota wget skipunina og draga niður tjörukúluna eins og hér að neðan.

# 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. Næst skaltu hlaða niður ngx_pagespeed frumskránum og pakka niður þjöppuðum skrám.

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

4. Farðu nú inn í óþjappaða ngx_pagespeed möppuna og fáðu PageSpeed fínstillingarsöfnin til að setja saman Nginx sem hér segir.

# 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

Skref 2: Stilltu og settu saman Nginx með Ngx_Pagespeed

5. Farðu nú inn í nginx-1.13.2 möppuna og stilltu Nginx upprunann með því að keyra skipanirnar hér að neðan.

# 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. Næst skaltu setja saman og setja upp Nginx eins og hér segir.

# make
# make install

7. Þegar uppsetningarferlinu er lokið skaltu búa til alla nauðsynlega tákntengla fyrir Nginx.

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

Skref 3: Að búa til Nginx Unit File fyrir SystemD

8. Næst, þar sem systemd er init kerfið í CentOS 7, þarftu að búa til Nginx einingaskrána handvirkt fyrir það.

Fyrst, búðu til skrána /lib/systemd/system/nginx.service, gríptu síðan NGINX systemd þjónustuskrána og límdu einingaskráarstillingarnar inn í skrána hér að neðan.

# vi /lib/systemd/system/nginx.service

Taktu eftir staðsetningu PIDFile og NGINX tvöfaldans sem þú stillir þegar þú stillir og settir saman Nginx, þú munt setja þær í viðeigandi breytur í einingaskránni eins og sýnt er hér að neðan:

[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

Vistaðu skrána og lokaðu henni.

9. Á þessum tímapunkti skaltu ræsa nginx þjónustuna í meðaltíma og gera henni kleift að byrja við ræsingu kerfisins með því að keyra skipanirnar hér að neðan.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx

Skref 4: Stilltu Nginx með Pagespeed Module

10. Með Nginx uppsett, næst þarftu að virkja Ngx_pagespeed einingu. Byrjaðu á því að búa til möppu þar sem einingin mun vista skrárnar fyrir vefsíðuna þína og stilla viðeigandi heimildir á þessari möppu með skipunum hér að neðan.

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

11. Nú er kominn tími til að virkja Ngx_pagespeed einingu, opna Nginx stillingarskrána og bæta við línunum hér að neðan.

Mikilvægt: Ef þú hefur stillt einhvern nginx sýndargestgjafa á þjóninum skaltu bæta ofangreindum síðuhraðatilskipunum við hvern netþjónsblokk til að virkja Ngx_pagespeed á hverri síðu.

# vi /etc/nginx/nginx.conf

Bættu við eftirfarandi Ngx_pagespeed stillingarlínum innan netþjónsblokkarinnar.

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

Eftirfarandi er vinnandi dæmi um Nginx stillingarskrána með Ngx_pagespeed virkt í sjálfgefna sýndarhýslinum.

#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. Gakktu úr skugga um að Nginx stillingarskráin sé villulaus með því að keyra skipunina hér að neðan, þú munt sjá úttakið fyrir neðan ef allt er í lagi.

# nginx -t

13. Að lokum skaltu endurræsa Nginx netþjóninn til að breytingarnar taki gildi.

# systemctl restart nginx

Skref 5: Prófaðu Nginx með Ngx_pagespeed

14. Til að vita hvort Ngx_pagespeed virkar núna í tengslum við Nginx, verður það að birtast í X-Page-Speed hausnum.

# curl -I -p http://localhost

Ef þú hefur ekki séð hausinn hér að ofan, farðu síðan aftur í skref 11 og fylgdu vandlega leiðbeiningunum til að virkja Ngx-síðuhraða með næstu skrefum.

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

Það er allt! Í þessari kennslu sýndum við hvernig á að setja upp og stilla Nginx með Ngx_pagespeed mát til að fínstilla og bæta árangur vefsvæðis og draga úr hleðslutíma síðu.

Til að tryggja Nginx vefþjóninn, lestu þessa grein – The Ultimate Guide to Secure, Harden and Improve Performance of Nginx Web Server.

Eins og alltaf, ekki hika við að láta okkur vita um allar fyrirspurnir eða hugsanir varðandi þessa kennslu.