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 ![]()
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 ![]()