Untuk kesederhanaan tulisan ini, saya tidak membahas konfigurasi Naxsi dan NGINX Cache Purge. Nanti bila saya tidak malas, saya akan tulis. Ya, silakan ingatkan saya saja kalau saya lupa. 🙂

Pendahuluan

Teman saya lebih suka melihat dokumentasi di blog saya dari pada Repositori Pengetahuan internal. Ya, sudah, makanya ini saya tulis di blog. Lumayanlah, untuk pengetahuan khalayak ramai juga.

Saat ini Google sedang menggadang-gadang SPDY. Chrome, Firefox, dan banyak peramban modern lainnya sudah mengerti tentang SPDY. Protokol ini diharapkan bisa menghasilkan koneksi yang aman namun lebih cepat dari pada koneksi TLS/SSL (HTTPS) biasa.

Menurut Wikipedia, SPDY menggunakan ekstensi NPN TLS/SSL dari OpenSSL versi 1.x. SPDY yang terbaru sekarang adalah versi 3.1 (SPDY/3.1). Versi 4 sedang masuk tahap alfa dan sejalan dengan HTTP 2.0.

Celakanya, NGINX yang dipaketkan oleh Debian saat ini masih menggunakan SPDY/2.0. Padahal, tak berapa lama lagi versi ini tak didukung oleh peramban. SPDY/3.1 didukung oleh NGINX 1.5.10+.

Hmm…. Saatnya membuka terminal!

Berkas-berkas yang dibutuhkan

Ada tiga paket yang dibutuhkan, NGINX (saat penulisan versi 1.5.12), Naxsi (versi GIT), dan NGINX Cache Purge (saat penulisan versi 2.1). Sebenarnya Naxsi dan NGINX Cache Purge tidak diperlukan. Namun, pada situs yang saya kelola, saya menggunakan kedua komponen tersebut. Untuk Anda mungkin kedua komponen tersebut tidak perlu.

NGINX

$ wget http://nginx.org/download/nginx-1.5.12.tar.gz
$ tar xvfz nginx-1.5.12.tar.gz

NGINX Cache Purge

$ wget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz
$ tar xvfz ngx_cache_purge-2.1.tar.gz

Naxsi

Kalau belum punya GIT, pasang dulu:

$ sudo apt-get install git

Baru lakukan ini:

$ git clone https://github.com/nbs-system/naxsi.git/

Pemasangan

Unduh dan pasang  paket-paket yang dibutuhkan sebelum mengompilasi dan memasang NGINX.

Memasang Paket-paket yang Dibutuhkan

Kalau paling gampang, untuk paket-paket yang dibutuhkan, cukup pasang:

$ sudo apt-get install build-dep nginx

Namun, ini memasang banyak sekali paket yang tak perlu. Cukup lakukan ini saja:

$ sudo apt-get install build-essential libssl-dev libpcre3-dev libgeoip-dev

Memasang NGINX dan Teman-teman

Masuk ke direktori sumber NGINX:

$ cd nginx-1.5.12/

Lakukan tiga langkah buat:

$ CFLAGS="-O2 -pipe -march=native -mtune=native -fomit-frame-pointer" ./configure --prefix=/opt/nginx \
   --with-file-aio --with-ipv6 --with-pcre --conf-path=/etc/nginx/nginx.conf \
   --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log \
   --http-client-body-temp-path=/var/lib/nginx/body --http-proxy-temp-path=/var/lib/nginx/proxy \
   --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx \
   --with-http_secure_link_module --with-http_random_index_module --with-http_ssl_module --with-http_realip_module \
   --with-http_addition_module --with-http_sub_module --with-http_gzip_static_module --with-http_degradation_module \
   --with-http_stub_status_module --with-http_geoip_module --with-http_spdy_module \
   --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --http-scgi-temp-path=/var/lib/nginx/scgi \
   --add-module=../ngx_cache_purge-2.1 --add-module=../naxsi/naxsi_src/
$ CFLAGS="-O2 -pipe -march=native -mtune=native -fomit-frame-pointer" make -j3
$ sudo CFLAGS="-O2 -pipe -march=native -mtune=native -fomit-frame-pointer" make install

Ya, sebagai seorang sysadmin, saya suka mengubah konfigurasi:

  • Karena ini kompilasi, sekalian saja buat supaya binari yang dibuat disesuaikan dengan mesin yang dipakai (alami/native).
  • Konfigurasi tempat berkas konfigurasi, log, dan soket disesuaikan dengan versi Debian.
  • Kompilasi secara paralel dengan menggunakan 3 trit.

Konfigurasi

Setelah terpasang, konfigurasi “/etc/nginx/nginx.conf”. Atau kalau pada Debian, pada “/etc/nginx/sites-enabled/XXXX”, ganti XXXX dengan berkas virtual host Anda misalkan “default”. Tambahkan baris berikut pada blok server:

server {
        ...
        listen 443 ssl spdy;
        ...
}

Lalu aktifkan TLS/SSL seperti biasa, contohnya:

        ssl on;
        ssl_certificate /etc/nginx/ssl/certificate/server.crt;
        ssl_certificate_key /etc/nginx/ssl/certificate/server.key;
        ssl_session_timeout 5m;
        ssl_protocols SSLv3 TLSv1;
        ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers on;

Menyalakan Ulang NGINX

Setelah selesai, matikan NGINX bila sudah ada NGINX di peladen.

$ sudo invoke-rc.d nginx stop

Ubah skrip NGINX di Debian untuk mengarah kepada binari NGINX yang kita kompilasi:

$ sudo sed -i.bak 's/^DAEMON=.*/DAEMON=\/opt\/nginx\/sbin\/nginx/g' /etc/init.d/nginx

Mari nyalakan kembali:

$ sudo invoke-rc.d nginx start

Selesai.

Terakhir

Untuk mengecek apakah sudah benar, bisa dicek di http://spdycheck.org/

Contohnya:

Blog Mahasiswa UI supports SPDY

Blog Mahasiswa UI supports SPDY

Semoga berhasil!