Tag Archives: nginx

Menjalankan CGI di nginx? Minta bantuan thttpd saja

Saat ini nginx tidak bisa menjalankan skrip cgi, dan sepertinya memang tidak ada rencana untuk menambahkan fitur cgi ke nginx. Sebetulnya tidak masalah, karena cgi sendiri memang serasa teknologi tahun 90-an. Sudah gak cocoklah buat generasi web 2.0 :P

Tapi terkadang kita memang membutuhkan aplikasi sederhana yang sebelumnya sudah bisa berjalan dengan baik di apache, dan ingin menjalankannya di nginx. Salah satunya aplikasi berbasiskan cgi.

Contoh realnya, saat ini saya ingin mengaktifkan monitoring zimbra menggunakan mailgraph. Karena di server itu saya sudah pasang nginx, saya ingin menjalankan cgi dari nginx itu. Ternyata setelah baca-baca wiki nginx, cara yang dituliskan disana sangat-sangat tidak praktis. Sampai akhirnya timbul ide cemerlang, menggunakan bantuan konfigurasi proxy_pass di nginx. Seperti contoh dibawah ini.

location /cgi-bin/ {
        proxy_pass   http://localhost:8888;
}

Langkah pertama, tentu saja install thttpd dan mailgraph. Di ubuntu tinggal instal dari repo.

sudo aptitude install thttpd mailgraph

Lalu edit konfigurasi /etc/thttpd/thttpd.conf, bisa dilihat di bawah. Sengaja saya set tidak di chroot, karena lokasi mailgraph.rrd saya biarkan di default instalasi paket mailgraph di ubuntu, yaitu di /var/lib/mailgraph/

# /etc/thttpd/thttpd.conf: thttpd configuration file

port=8888
dir=/var/www
nochroot

user=www-data
cgipat=/cgi-bin/*

throttles=/etc/thttpd/throttle.conf
logfile=/var/log/thttpd.log

Langkah selanjutnya, saya tinggal menyalin berkas mailgraph.cgi ke lokasi cgi-bin di thttpd.

mkdir /var/www/cgi-bin
cp /usr/lib/cgi-bin/mailgraph.cgi /var/www/cgi-bin/

Sekarang grafik mailgraph bisa diakse menggunakan url

http://ip.server.saya:8888/cgi-bin/mailgraph.cgi

atau lewat nginx.

http://ip.server.saya/cgi-bin/mailgraph.cgi

Pertanyaannya, kenapa tidak langsung akses ke port 8888 saja? Tentu saja bisa. Tapi saya ingin menampilkan di port 80, dan dengan di proxy via nginx, saya bisa menikmati fitur modul kompresi gzip di nginx yang tidak disediakan oleh thttpd.

Psssttt… emang dasar lagi pengen ngotak-ngatik nginx saja :))

Ketika pindah ke NGINX, perhatikan juga .htaccess

Nginx, http server yang lagi naik daun. Mungkin Anda yang tergila-gila kata-kata ringan dan cepat mulai mencoba-coba atau mungkin sudah menggunakan nginx di server Anda.

Tapi satu hal yang perlu Anda perhatikan, nginx tidak membaca berkas .htaccess. Padahal banyak sekali aplikasi php misalnya yang mengatur proses rewrite url atau security di berkas .htaccess ini.

Soal url rewrite biasanya akan lebih diperhatikan karena kalau tidak dikonversi ke rewritenya di nginx.conf biasanya program gak berfungsi. Tapi tentang security, mungkin saja luput dari perhatian Anda.

Misal, saat saya install phpBB 3.0.3, ada beberapa file .htaccess, yaitu:

  • .htaccess
  • cache/.htaccess
  • files/.htaccess
  • images/avatars/upload/.htaccess
  • store/.htaccess

Saya kasih contoh untuk .htaccess, isinya seperti berikut:

<Files "config.php">
Order Allow,Deny
Deny from All
</Files>

<Files "common.php">
Order Allow,Deny
Deny from All
</Files>

Kalau diterjemahkan ke nginx.conf, kira-kira seperti ini:

location ~ ^/(common|config)\.php {
    deny all;
}

Dan seterusnya, Anda baca juga berkas .htaccess yang lainnya. Kalau hasil konversi versi saya, semua .htaccess itu diterjemahkan menjadi seperti dibawah ini:

location ~ ^/(common|config)\.php {
    deny all;
}

location ~ ^/(cache|files|store)/ {
    deny all;
}

location ~ ^/images/avatars/upload/ {
    deny all;
}

Ok, jadi ini adalah PR untuk Anda yang menggunakan nginx. Jangan pernah melupakan .htaccess :)

Instalasi Nginx Dari Source di Ubuntu Hardy

Akhirnya saya ikut-ikutan juga ingin mencoba aplikasi nginx (baca: engine-x), sebuah webserver yang sangat ringan (katanya sih, jadi silahkan Anda buktikan sendiri). Sebetulnya selain sebagai pelayan web, nginx ini bisa digunakan sebagai proxy utk aplikasi smtp, pop atau imap, load balancer, atau web accelerator.

Ok, lupakan intro di atas. Saya akhirnya memutuskan untuk mencoba menginstal aplikasi ini. Tapi setelah dilihat-lihat ternyata versi yang tersedia di repo Ubuntu Hardy saya, tergolong sudah tua. Buktinya di website nginx, versi ini sudah digolongkan sebagai rilis legacy.

Karena alasan di atas itulah, saya jadinya lebih memilih instal dari source dengan mengambil berkas sumber dari web nginx, dikompail dan diinstal. Beruntung sekali, slicehost sudah menyediakan beberapa artikel tentang instalasi nginx di Ubuntu.

Dan seperti biasa, jika lagi iseng dan tidak ada kerjaan, saya buatkan tulisan versi saya sendiri di wiki. Mudah-mudahan berguna :)