Menuruti permintaan lain dari mbak Shafira, kali ini sedikit modifikasi pada web server Nginx dimana kita akan menambahkan modul PageSpeed (ngx_pagespeed) buatan Google kedalamnya. Hal ini berpengaruh terhadap optimalisasi konten website yang dilayankan oleh Nginx, bisa lebih cepat memang tapi pastikan dulu server anda mampu. Atau mungkin VPS saya saja yang terlalu lemah. Haha. 😀

Jadi apa manfaatnya PageSpeed Module ini? Setiap konten baik halaman situs, gambar, javascript dan css, kompresi, minify, pengaturan cache, dan masih banyak lagi akan diatur langsung dari Nginx. Ini lebih unggul dibandingkan – misal – optimalisasi dari WordPress dengan plugin – pluginnya karena harus diproses oleh PHP dulu dan dikembalikan ke Nginx. Jadi memotong satu langkah dan memang performa Nginx lebih ringan dibandingkan PHP-FPM sendiri.

Membuat dan menginstall Nginx dengan ngx_pagespeed

Nah… jeleknya tidak ada cara mudah seperti menggunakan yum atau apt-get untuk instalasi modul PageSpeed ini. Mungkin ada repository eksternal untuk ini tapi saya belum menemukannya. Kita harus mengkompilasikan programnya dari source code. Ini yang akan kita lakukan saat ini.

Pertama kita install dulu paket aplikasi yang dibutuhkan untuk kompilasi ngx_pagespeed:

  • CentOS/RHEL/Fedora
    yum install gcc-c++ pcre-devel zlib-devel make unzip
  • Debian/Ubuntu
    apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip

Kemudian kita download ngx_pagespeed dan binary PSOL (PageSpeed Optimization Library):

cd
NPS_VERSION=1.9.32.10
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${NPS_VERSION}-beta.zip
unzip release-${NPS_VERSION}-beta.zip
cd ngx_pagespeed-release-${NPS_VERSION}-beta/
wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz
tar -xzvf ${NPS_VERSION}.tar.gz

Jalankan secara urut satu per satu. Versi PageSpeed modulnya adalah 1.9.32.10 beta, bisa anda ganti pada variabel NPS_VERSION. Cek halaman rilisnya di GitHub untuk versi terbarunya.

Selanjutnya kita akan membuat Nginx dari source code dengan tambahan fitur PageSpeed diatas:

cd
NGINX_VERSION=1.9.6
wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
tar -xvzf nginx-${NGINX_VERSION}.tar.gz
cd nginx-${NGINX_VERSION}/
./configure --add-module=$HOME/ngx_pagespeed-release-${NPS_VERSION}-beta
make
make install

Saya gunakan versi mainline terbarunya 1.9.6, sedangkan stablenya adalah 1.8.0. Tinggal digantikan di variable NGINX_VERSION. Anda bisa cek versi terbaru Nginx dihalaman download.

Anda bisa mengecek apakah nginx sudah terinstall dengan modul pagespeed:

/usr/local/nginx/sbin/nginx -V

Balasannya akan mirip seperti ini:

nginx version: nginx/1.9.6
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) 
configure arguments: --add-module=/root/ngx_pagespeed-release-1.9.32.10-beta

Bisa anda lihat bahwa dalam daftar modul Nginx sudah terinstall ngx_pagspeed dan versinya.

Mengatur konfigurasi ngx_pagespeed

Ini belum selesai prosesnya karena kita perlu mengaktifkan pagespeed di Nginx dan menerapkannya pada setiap situs yang diinginkan. Diawali dengan membuat direktori untuk menyimpan cache:

mkdir /var/ngx_pagespeed_cache
chown nginx:nginx /var/ngx_pagespeed_cache

Disusul dengan mengedit nginx.conf:

nano /usr/local/nginx/conf/nginx.conf

Dalam blok server tambahkan kode ini:

#Mengaktifkan PageSpeed Module
pagespeed on;
#Lokasi file cache PageSpeed
pagespeed FileCachePath /var/ngx_pagespeed_cache;
#Mengikutkan konfigurasi virtual host
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

Sementara konfigurasi ini sudah cukup dulu untuk awalnya, nanti bisa dipilah – pilah menjadi lebih spesifik filter yang bisa digunakan tapi harus menggunakan opsi PassThrough.

Nah selanjutnya kita bisa mengatur PageSpeed ini per virtual hostnya dan juga dalam blok server:

#Hanya menggunakan optimasi paling aman dari Google
pagespeed RewriteLevel CoreFilters;

#Memastikan permintaan konten yang dioptimais oleh pagespeed selalu ditujukan ke lokasi yang benar
  location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
    add_header "" "";
  }
  location ~ "^/ngx_pagespeed_static/" {
  }
  location ~ "^/ngx_pagespeed_beacon$" {
  }
  location /ngx_pagespeed_statistics {
    allow 127.0.0.1;
    deny all;
  }
  location /ngx_pagespeed_global_statistics {
    allow 127.0.0.1;
    deny all;
  }
  location /ngx_pagespeed_message {
    allow 127.0.0.1;
    deny all;
  }
  location /pagespeed_console {
    allow 127.0.0.1;
    deny all;
  }

Karena kita membuat Nginx dari source bukan lewat repositorynya maka kita perlu menambahkannya dalam init.d Linux, kalau tidak ya tidak akan dijalankan saat booting. Saya anjurkan agar diuji dengan mereboot servernya.

Silahkan anda buat file berikut:

nano /etc/init.d/nginx

Kemudian isikan init script Nginx yang saya buat sebelumnya.

Dan buat supaya file tersebut menjadi executable, batasi hak aksesnya dan ganti pemiliknya ke root:

chmod +x /etc/init.d/nginx
chmod 0755 /etc/init.d/nginx
chown root:root /etc/init.d/nginx

Terakhir mari kita restart Nginx:

service nginx reload

atau

service nginx restart

Dan saya baru ingat, kalau anda belum memasukkan lokasi program Nginx ke variabel $PATH maka perintah anda tidak bisa dieksekusi. Nanti akan muncul error: bash: nginx command not found. Silahkan ketikkan perintah ini:

export PATH=/usr/local/nginx/sbin/:$PATH

Menguji Nginx PageSpeed Module sudah aktif atau belum

Nah… setelah itu kita tahu kalau optimasi menggunakan PageSpeed Module sudah aktif darimana? Paling mudah adalah dengan mengecek lewat header HTTPnya. Ini saya cek dari server terinstallnya Nginx tadi dan menjalankannya menuju localhost.

curl -I -p http://localhost|grep X-Page-Speed
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
X-Page-Speed: 1.9.32.10-7423

atau

curl -I -p http://localhost
HTTP/1.1 200 OK
Server: nginx/1.9.6
Content-Type: text/html
Connection: keep-alive
Date: Fri, 06 Nov 2015 02:15:10 GMT
X-Page-Speed: 1.9.32.10-7423
Cache-Control: max-age=0, no-cache

Anda bisa lihat akan ada kode X-Page-Speed dalam hasil cek header HTTPnya dan nilainya adalah versi dari PageSpeed Module yang terinstall dalam Nginx. Ini menandakan anda telah sukses memasangkannya. Sekarang sisanya tinggal optimasi setting PageSpeed, dan ini… cukup ribet juga kalau mau benar – benar maksimal dari pengalaman saya sebelumnya.

Semoga bermanfaat. 🙂

Oh ya ada versi untuk web server Apache, mungkin lain kali akan saya bahas.