ค้นหาเว็บไซต์

เร่งความเร็วประสิทธิภาพ Nginx ด้วย Ngx_Pagespeed บน CentOS 7


Nginx [engine x] เป็นเว็บเซิร์ฟเวอร์และพร็อกซีย้อนกลับที่ทรงพลังและโอเพ่นซอร์สฟรีที่เขียนด้วยภาษา C นอกจากนี้ยังเป็นพร็อกซีเซิร์ฟเวอร์ IMAP/POP3 และ TCP/UDP มาตรฐานอีกด้วย และสามารถใช้เป็นโหลดบาลานเซอร์ได้

Nginx เป็นเซิร์ฟเวอร์ HTTP ที่รู้จักกันดี (เทียบได้กับเซิร์ฟเวอร์ Apache HTTP) ที่ขับเคลื่อนเว็บไซต์จำนวนมากบนเว็บ เป็นที่นิยมในด้านประสิทธิภาพและความเสถียรสูง

มีปัจจัยสำคัญหลายประการที่ต้องพิจารณาเมื่อคุณต้องการปรับปรุงประสบการณ์ผู้ใช้บนไซต์ของคุณ รวมถึงความเร็วไซต์และความเร็วหน้าเว็บ (หรือที่เรียกว่าเวลาในการโหลดหน้าเว็บ) หากไซต์ของคุณขับเคลื่อนโดย Nginx คุณสามารถใช้ ngx_pagespeed เพื่อจุดประสงค์นี้ได้

แนะนำให้อ่าน: ติดตั้ง Mod_Pagespeed เพื่อปรับปรุงประสิทธิภาพของเซิร์ฟเวอร์ Apache

Ngx_pagespeed เป็นโมดูล Nginx แบบโอเพ่นซอร์สฟรีที่ใช้เพื่อเพิ่มความเร็วของไซต์ตลอดจนลดขนาดเวลาในการโหลดหน้าเว็บ ช่วยลดเวลาที่ผู้ใช้ใช้ในการดูและโต้ตอบกับเนื้อหาเว็บไซต์ของคุณได้อย่างมาก

คุณสมบัติ Ngx_pagespeed:

  • รองรับการควบคุม HTTPS และ URL
  • การเพิ่มประสิทธิภาพรูปภาพ: การลอกข้อมูลเมตา การปรับขนาดแบบไดนามิก การบีบอัดใหม่
  • การลดขนาด CSS และ JavaScript การต่อข้อมูล การอินไลน์ และการสรุป
  • ทรัพยากรขนาดเล็กที่แทรกอยู่
  • การเลื่อนการโหลดรูปภาพและ JavaScript
  • การเขียน HTML ใหม่
  • การขยายอายุการใช้งานแคช
  • อนุญาตให้กำหนดค่าสำหรับเซิร์ฟเวอร์หลายเครื่องและอื่น ๆ อีกมากมาย

ในบทช่วยสอนนี้ เราจะแสดงวิธีการติดตั้ง Nginx ด้วย ngx_pagespeed และทดสอบการติดตั้งทั้งหมดบน RHEL/CentOS 7

โปรดทราบ: ผู้ใช้ Debian และ Ubuntu สามารถปฏิบัติตามคำแนะนำนี้เพื่อติดตั้ง Ngx_Pagespeed เพื่อปรับปรุงประสิทธิภาพของ Nginx

ขั้นตอนที่ 1: ติดตั้ง Nginx จากแหล่งที่มา

1. หากต้องการติดตั้ง Nginx ด้วย ngx_pagespeed คุณจะต้องคอมไพล์จากแหล่งที่มา ขั้นแรกให้ติดตั้งแพ็คเกจทั้งหมดที่จำเป็นสำหรับการคอมไพล์ Nginx จากแหล่งเช่นนี้

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

2. ถัดไป รับไฟล์ต้นฉบับของ Nginx เวอร์ชันล่าสุด (1.13.2 ในขณะที่เขียนบทความนี้) โดยใช้คำสั่ง wget และแตกไฟล์ tar ball ที่ดาวน์โหลดมาดังต่อไปนี้ .

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. จากนั้น ดาวน์โหลดไฟล์ต้นฉบับ ngx_pagespeed และแตกไฟล์บีบอัด

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

4. ตอนนี้ให้ย้ายไปยังไดเร็กทอรี ngx_pagespeed ที่คลายซิปแล้ว และรับไลบรารีการเพิ่มประสิทธิภาพ PageSpeed เพื่อคอมไพล์ 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: กำหนดค่าและคอมไพล์ Nginx ด้วย Ngx_Pagespeed

5. ตอนนี้ไปที่ไดเร็กทอรี nginx-1.13.2 และกำหนดค่าแหล่งที่มาของ Nginx โดยเรียกใช้คำสั่งด้านล่าง

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. ถัดไป คอมไพล์และติดตั้ง Nginx ดังนี้

make
make install

7. เมื่อกระบวนการติดตั้งเสร็จสมบูรณ์ ให้สร้างลิงก์สัญลักษณ์ที่จำเป็นทั้งหมดสำหรับ Nginx

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

ขั้นตอนที่ 3: การสร้างไฟล์หน่วย Nginx สำหรับ SystemD

8. ถัดไป เนื่องจาก systemd เป็นระบบ init ใน CentOS 7 คุณจึงต้องสร้างหน่วย Nginx ด้วยตนเอง ไฟล์สำหรับมัน

ก่อนอื่น ให้สร้างไฟล์ /lib/systemd/system/nginx.service จากนั้นคว้าไฟล์บริการ NGINX systemd แล้ววางการกำหนดค่าไฟล์หน่วยลงในไฟล์ด้านล่าง

vi /lib/systemd/system/nginx.service

จดตำแหน่งของ PIDFile และไบนารี NGINX ที่คุณตั้งค่าขณะกำหนดค่าและคอมไพล์ Nginx คุณจะตั้งค่าไว้ในตัวแปรที่เหมาะสมในไฟล์หน่วยดังที่แสดงด้านล่าง : :

[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

บันทึกไฟล์และปิด

9. ณ จุดนี้ ให้เริ่มบริการ nginx ในช่วงเวลาเฉลี่ย และเปิดใช้งานให้เริ่มเมื่อบูตระบบโดยการรันคำสั่งด้านล่าง

systemctl start nginx
systemctl enable nginx
systemctl status nginx

ขั้นตอนที่ 4: กำหนดค่า Nginx ด้วยโมดูล Pagespeed

10. เมื่อติดตั้ง Nginx แล้ว คุณจะต้องเปิดใช้งานโมดูล Ngx_pagespeed เริ่มต้นด้วยการสร้างไดเร็กทอรีที่โมดูลจะแคชไฟล์สำหรับเว็บไซต์ของคุณ และตั้งค่าการอนุญาตที่เหมาะสมในไดเร็กทอรีนี้ด้วยคำสั่งด้านล่าง

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

11. ถึงเวลาเปิดใช้งานโมดูล Ngx_pagespeed เปิดไฟล์การกำหนดค่า Nginx และเพิ่มบรรทัดด้านล่าง

ข้อสำคัญ: หากคุณได้กำหนดค่าโฮสต์เสมือน nginx บนเซิร์ฟเวอร์ ให้เพิ่มคำสั่ง pagespeed ข้างต้นลงในแต่ละบล็อกเซิร์ฟเวอร์เพื่อเปิดใช้งาน Ngx_pagespeed ในแต่ละไซต์

vi /etc/nginx/nginx.conf

เพิ่มบรรทัดการกำหนดค่า Ngx_pagespeed ต่อไปนี้ภายในบล็อกเซิร์ฟเวอร์

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

ต่อไปนี้เป็นตัวอย่างการทำงานของไฟล์การกำหนดค่า Nginx ที่เปิดใช้งาน Ngx_pagespeed ในโฮสต์เสมือนเริ่มต้น

#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. หลังจากนั้น ตรวจสอบให้แน่ใจว่าไฟล์กำหนดค่า Nginx ปราศจากข้อผิดพลาดโดยการรันคำสั่งด้านล่าง คุณจะเห็นผลลัพธ์ด้านล่างหากทุกอย่างเรียบร้อยดี

nginx -t

13. สุดท้าย รีสตาร์ทเซิร์ฟเวอร์ Nginx เพื่อให้การเปลี่ยนแปลงมีผล

systemctl restart nginx

ขั้นตอนที่ 5: ทดสอบ Nginx ด้วย Ngx_pagespeed

14. หากต้องการทราบว่า Ngx_pagespeed ทำงานร่วมกับ Nginx ได้หรือไม่ จะต้องปรากฏในส่วนหัว X-Page-Speed

curl -I -p http://localhost

ในกรณีที่คุณไม่เห็นส่วนหัวด้านบน ให้กลับไปที่ขั้นตอนที่ 11 และปฏิบัติตามคำแนะนำอย่างระมัดระวังเพื่อเปิดใช้งาน Ngx-pagespeed ด้วยขั้นตอนถัดไป

พื้นที่เก็บข้อมูล Github Ngx-pagespeed: https://github.com/pagespeed/ngx_pagespeed

นั้นคือทั้งหมด! ในบทช่วยสอนนี้ เราได้แสดงวิธีการติดตั้งและกำหนดค่า Nginx ด้วยโมดูล Ngx_pagespeed เพื่อเพิ่มประสิทธิภาพและปรับปรุงประสิทธิภาพของเว็บไซต์ และลดเวลาในการโหลดหน้าเว็บ

เพื่อรักษาความปลอดภัยเว็บเซิร์ฟเวอร์ Nginx โปรดอ่านบทความนี้ - สุดยอดแนวทางในการรักษาความปลอดภัย เสริมความแข็งแกร่ง และปรับปรุงประสิทธิภาพของเว็บเซิร์ฟเวอร์ Nginx

และเช่นเคย อย่าลังเลที่จะแจ้งให้เราทราบข้อสงสัยหรือความคิดเห็นเกี่ยวกับบทช่วยสอนนี้