Panduan Memasang module pagespeed pada Nginx di Centos 8 ini saya buat didasari oleh kecenderungan saya yang sering bolak-balik inul (install ulang) vps. Jadi biar saya enggak ribet mengunjungi berbagai macam situs untuk referensi pemasangan module ini, saya buat aja di artikel versi saya sendiri.
Ngx_pagespeed adalah module pagespeed yang didesain khusus untuk web server NGINX, berbeda dengan module pagespeed pada Apache yang sudah ada precompiled binary-nya, untuk memasang module ngx_pagespeed ini harus melalui proses kompilasi melalui kode sumbernya terlebih dahulu.
Module ngx_pagespeed ini sangat bagus untuk mengoptimasi website secara Otomatis, tanpa harus install plugin sana sini, tinggal terapin beberapa kode aja melalui server sudah otomatis teroptimasi. Untuk melihat apa saja fitur yang disediakan oleh module ini silahkan kunjungi halaman disini.
Daftar Isi
- Prasyarat
- Pemasangan Dependensi
- Mengunduh Module Pagespeed
- Mengunduh Nginx
- Kompilasi Nginx & Pagespeed
- Konfigurasi Nginx & Pagespeed
Prasyarat Memasang Module Pagespeed
Panduan ini saya buat menggunakan sistem operasi Distro Linux Centos 8 pada VPS Vultr. Untuk itu pastikan sebelum mengikuti panduan ini, kamu sudah mengikuti prasyarat berikut ini :
- Memiliki linux server Centos 8
- Memiliki akses super user / root
- Mengerti cara menggunakan Nginx
- Mengerti cara mengoperasikan perintah cli (command line interface) pada Linux.
Catatan: Perlu diketahui jika Kamu memasang Nginx dengan module pagespeed melalui kode sumber dibawah ini. Setiap ada versi terbaru yang keluar, kamu perlu melakukan pemasangan ulang mulai dari langkah 1 hingga langkah terakhir untuk melakukan upgrade dengan patch terbaru.
Langkah 1 : Pemasangan Dependensi Yang Dibutuhkan
Untuk melakukan kompilasi module ngx_pagespeed pada nginx di centos 8, pastikan kita sudah memasang software yang dibutuhkan untuk melakukan kompilasi pada Centos 8 dengan menjalankan perintah dibawah ini.
dnf -y install gcc cmake make unzip wget gcc-c++ pcre-devel zlib-devel libuuid-devel openssl-devel
perintah dibawah berfungsi untuk membuat dummy folder untuk mengumpulkan berkas dan folder ngx_pagespeed & nginx pada satu folder biar terkesan rapi saja.
mkdir -p ~/ngx_pagespeed
cd ~/ngx_pagespeed
Langkah 2 : Mengunduh Module Pagespeed
Untuk memasang module pagespeed kita perlu mengunduhnya terlebih dahulu sebelum melakukan kompilasi pada nginx. Buka terminal dan jalankan perintah berikut ini.
Perintah dibawah ini untuk mendeklarasikan variabel versi ngx_pagespeed guna untuk memudahkan dalam menjalankan perintah lainnya tanpa harus mengetikkan versi module, untuk melihat versi terbaru dari module ngx_pagespeed bisa dilihat disini
VERSI_NPS=1.13.35.2-stable
Setelah variabel dideklarasi, sekarang saatnya mengunduh module ngx_pagespeed dengan perintah
wget https://github.com/apache/incubator-pagespeed-ngx/archive/v${VERSI_NPS}.zip
Kemudian ekstrak filenya dengan perintah
unzip v${VERSI_NPS}.zip
Setelah itu kembali ke folder awal dengan mengetikkan perintah
cd ~
Kemudian jalankan perintah ini untuk mendeklarasikan variabel path untuk folder nps
folder_nps=$(find . -name "*pagespeed-ngx-${VERSI_NPS}" -type d)
Setelah itu, jalankan perintah dibawah untuk masuk ke folder module pagespeed
cd "$folder_nps"
Jika sudah, jalankan perintah dibawah untuk mendeklarasikan versi psol (Pagespeed Optimization Libraries).
NPS_STABLE=${VERSI_NPS/stable/}
Kemudian, kita akan mendeklarasikan variabel link_psol
yang akan digunakan untuk mengunduh psol didalam module ngx_pagespeed
link_psol=https://dl.google.com/dl/page-speed/psol/${NPS_STABLE}.tar.gz
lalu jalankan perintah ini
[ -e scripts/format_binary_url.sh ] && link_psol=$(scripts/format_binary_url.sh PSOL_BINARY_URL)
Kemudian jalankan perintah dibawah ini untuk mulai mengunduh psol
wget ${link_psol}
Kemudian ekstrak file psol menggunakan perintah ini
tar -xzvf $(basename ${link_psol})
Sampai disini kita sudah berhasil mengunduh module ngx_pagespeed dan psol yang akan dikompilasi bersama nginx.
Langkah 3 : Mengunduh NGINX
Jalankan perintah dibawah ini untuk memasuki kembali folder dummy
cd ~/ngx_pagespeed
Kemudian kita akan mendeklarasikan variabel untuk versi nginx. Untuk melihat versi terbaru dari nginx klik disini.
VERSI_NGINX=1.18.0
Lalu jalankan perintah dibawah untuk mulai mengunduh nginx
wget http://nginx.org/download/nginx-${VERSI_NGINX}.tar.gz
Ekstrak berkas nginx yang sudah diunduh
tar -xvzf nginx-${VERSI_NGINX}.tar.gz
Nah pada tahap ini kita sudah selesai mengunduh NGINX yang akan dikompilasi dengan module ngx_pagespeed.
Langkah 4 : Kompilasi & Memasang module pagespeed dan nginx
Pada tahap ini kita akan melakukan kompilasi module ngx_pagespeed dengan nginx. Selain itu saya juga menambahkan module http2 dan ssl pada nginx dari kode sumber ini, penambahan fitur tersebut menyebabkan proses kompilasi memakan resource ram lebih tinggi.
Untuk itu, bagi kamu yang memiliki vps server dengan ram dibawah 2GB, saya rekomendasikan untuk mengikuti panduan membuat swap file di linux.
Silahkan masuk ke folder nginx yang sudah di ekstrak tadi
cd ~/ngx_pagespeed/nginx-${VERSI_NGINX}
Kemudian jalankan perintah dibawah ini untuk mempersiapkan module yang akan dikompilasi
./configure --add-module=$HOME/$folder_nps --user=nobody --group= nobody --pid-path=/var/run/nginx.pid --with-http_ssl_module --with-http_v2_module ${PS_NGX_EXTRA_ FLAGS}
Kemudian jalankan perintah dibawah untuk mengkompilasi module pagespeed dan nginx
make
Maka proses kompilasi akan dimulai. Tunggu saja, karena kecepatan proses kompilasi tergantung spesifikasi server yang kamu miliki. Jika sudah selesai, tampilannya akan seperti ini

Kemudian pasang nginx yang sudah di kompilasi menggunakan perintah
make install
Jika sudah, maka tampilan ketika proses pemasangan selesai akan tampak seperti gambar dibawah ini

Setelah Nginx berhasil dipasang, kamu perlu melakukan symlink agar bisa menjalankan nginx seperti biasa
ln -s /usr/local/nginx/conf/ /etc/nginx
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
Lalu buat file baru pada /etc/init.d/nginx
, dan isikan dengan baris dibawah ini
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: NGINX is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
if [ -n "$user" ]; then
if [ -z "`grep $user /etc/passwd`" ]; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
fi
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
sleep 1
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
Simpan baris tersebut, kemudian berikan permission agar file tersebut bisa diakses.
chmod +x /etc/init.d/nginx
Kemudian uji coba jalankan Nginx dengan perintah dibawah ini
systemctl start nginx
systemctl enable nginx
Langkah 5 : Konfigurasi Nginx & Pagespeed
Sebelum menambahkan baris konfigurasi untuk mengaktifkan module pagespeed pada nginx, kamu perlu membuat folder cache untuk pagespeed terlebih dahulu
mkdir -p /var/cache/ngx_pagespeed
chown -R nobody:nobody /var/cache/ngx_pagespeed
Setelah itu buat file baru pada /etc/nginx/site.conf.d/pagespeed.conf
, dengan perintah dibawah ini
mkdir -p /etc/nginx/site.conf.d
nano /etc/nginx/site.conf.d/pagespeed.conf
Kemudian isi baris konfigurasi pagespeed dibawah ini
pagespeed on;
pagespeed FileCachePath "/var/cache/ngx_pagespeed/";
pagespeed EnableCachePurge on;
pagespeed StatisticsPath /ngx_pagespeed_statistics;
pagespeed MessagesPath /ngx_pagespeed_message;
pagespeed ConsolePath /pagespeed_console;
pagespeed AdminPath /cache_admin;
pagespeed RewriteLevel CoreFilters;
pagespeed EnableFilters remove_quotes;
pagespeed EnableFilters combine_css;
pagespeed EnableFilters combine_javascript;
pagespeed EnableFilters rewrite_images;
pagespeed EnableFilters insert_dns_prefetch;
pagespeed EnableFilters hint_preload_subresources;
pagespeed DisableFilters prioritize_critical_css;
pagespeed EnableFilters inline_css;
pagespeed EnableFilters sprite_images;
pagespeed EnableFilters dedup_inlined_images;
pagespeed EnableFilters lazyload_images;
pagespeed EnableFilters defer_javascript;
pagespeed EnableFilters rewrite_javascript;
pagespeed EnableFilters responsive_images,resize_images;
pagespeed EnableFilters collapse_whitespace,remove_comments;
pagespeed EnableFilters make_show_ads_async;
pagespeed EnableFilters extend_cache;
pagespeed EnableFilters make_google_analytics_async;
pagespeed EnableFilters in_place_optimize_for_browser;
pagespeed HttpCacheCompressionLevel 9;
pagespeed Disallow "*/wp-admin/*";
location /ngx_pagespeed_statistics {}
location /ngx_pagespeed_message {}
location /pagespeed_console {}
location ~ ^/cache_admin {}
location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
add_header "" "";
}
Setelah itu simpan kemudian, lalu tambahkan baris dibawah ini pada konfigurasi server block nginx yang kamu miliki.
include /etc/nginx/site.conf.d/pagespeed.conf;
Uji coba apakah konfigurasi yang barusan dilakukan ada error atau tidak dengan menjalankan perintah.
nginx -t
Jika hasil dari perintah diatas seperti ini, maka konfigurasi sudah berhasil.
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Cek kembali dengan mengakses halaman menggunakan perintah curl
curl -I http://localhost

Hasil dari perintah diatas menujukkan versi X-Page-Speed
, yang artinya Module Pagespeed & Nginx sudah berhasil dikonfigurasi 🙂
Referensi :
– https://www.modpagespeed.com
– https://www.nginx.com
Leave a Reply