Yup, kamu tidak salah baca. Bukan satu server dengan dua domain, bukan satu Web Server dengan dua port, dan bukan pula satu Web Server dengan dua IP. Ini benar dua Web Server didalam satu server. Mungkin pertanyaan yang paling mendasar adalah 'untuk apa?'. Dalam praktiknya, sebuah server dengan Web Servernya melayani rekues Http (HTTP Request) untuk diproses dan kemudian dikembalikan lagi ke user sebagai respons Http (HTTP Response). Bentuk dari rekuest Http itu sendiri terdiri halaman web (berupa HTML atau skripting) dan komponen atau entitas seperti image, JavaScript, CSS. Dan Web Server memproses semua rekues tersebut. Dengan mengaplikasikan dua Web Server dalam satu server ini bertujuan untuk membagi tugas antara satu Web Server dengan Web Server lainnya. semisal, satu Web Server untuk melayani rekues halaman web terutama halaman web yang dinamis (menggunakan Php, Asp, ColdFusion sebagai bahasa pemrogamannya) dan satu Web Server lagi untuk melayani rekues file-file statik (jpg, gif, js, css). Karena dua Web Server mengerjakan tugasnya yang berbeda, maka sebuah rekues halaman web akan diproses secara simultan oleh dua Web Server. Tentunya ini akan memperkecil waktu akses yang dialami user. [caption id="attachment_57738" align="aligncenter" width="249" caption="Nginx and Apache"][/caption] Untuk memudahkan pemahaman, kali ini saya akan mengulas tidak hanya konsep melainkan praktiknya juga. Lingkungan pengujian tetap saya gunakan Linux sebagai OS, Php sebagai bahasa pemrograman webnya. Sedangkan untuk Web Servernya saya menggunakan Apache dan Nginx. Sebagai rujukan awal, saya sarankan untuk membaca juga artikel tentang Reverse Proxy karena dasar dari praktik ini menggunakan teknik yang digunakan Reverse Proxy. Yang pertama kita perlukan adalah Web Server itu sendiri. Download dan install-lah Apache/Httpd dan Nginx di server anda, untuk cara instalasinya bisa dilihat dari dokumentasi tiap-tiap aplikasi. Berikutnya kita lakukan konfigurasi seperti ini:
Apache / HTTPD
Edit file konfigurasi apache dengan menggunakan teks editor yang biasa anda gunakan. Standard-nya lokasi konfigurasi utama untuk RHEL dan turunannya (Fedora, CentOS) ada di /etc/httpd/conf/httpd.conf sedangkan Debian dan turunannya (Ubuntu, Kubuntu) terletak di /etc/apache2/apache2.conf. Setting yang diperlukan di Apache hanya mengubah port selain dari port default HTTP yaitu 80. Dalam contoh ini saya ubah port Apache menjadi 8080. Untuk mengubah ini bisa dilakukan dengan mengubah parameter Listen menjadi 8080.
Listen 8080
Hanya parameter tersebut yang perlu diset di Apache.
Nginx
Disini kita perlu setting beberapa parameter agar Nginx dapat bekerja sebagai Web Server dan Reverse Proxy. Hal pertama yang bisa kita lakukan adalah mengubah parameter agar Nginx berjalan di port 80, lakukanlah dengan mengubah nilai dari parameter listen menjadi 80
listen 80
Setelah itu kita mendefinisikan tipe-tipe file yang akan di proses oleh Nginx, dalam hal ini adalah file-file statik. File statik adalah file yang langsung direspons oleh Web Server tanpa melalui proses pengolahan content atau data eksternal.
location ~* ^.+.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf)$ { Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â root /path/to/document_root/; Â Â Â Â Â Â Â }
Berikutnya adalah mengatur Nginx agar meneruskan rekues Http untuk file-file dinamis ke Web Server Apache di port 8080.
location / {           proxy_pass          http://localhost:8080;           proxy_set_header  Host            $http_host;           proxy_set_header  X-Real-IP       $remote_addr;           proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;           proxy_intercept_errors      off;        }
Seperti yang terlihat diatas, Nginx hanya difungsikan sebagai Reverve Proxy yaitu meneruskan permintaan Http yang berbentuk halaman dinamis langsung ke Web Server tanpa melakukan caching (Web Accelerator). Untuk contoh konfigurasi secara keseluruhan dapat dilihat di file nginx.conf berikut. Pengujian Kita dapat mengetahui kedua Web Server telah bekerja sesuai tugasnya masing-masing dengan melihat log access-nya. Untuk log access di Apache dapat kita lihat kalau Apache tidak menerima file-file statik. Tetapi log access di Nginx terlihat semua rekues Http ada disana, baik file-file statik maupun halaman dinamis. Ini terjadi karena semua rekues Http masuk terlebih dahulu melalui Nginx (karena Nginx berjalan di port default HTTP, yaitu port 80) kemudian diteruskan ke Apache apabila Http rekues bukan file statik. Semoga dengan menggunakan dua Web Server dapat mempercepat waktu akses user ketika merekues halaman web. Patut dicoba bukan?
Baca konten-konten menarik Kompasiana langsung dari smartphone kamu. Follow channel WhatsApp Kompasiana sekarang di sini: https://whatsapp.com/channel/0029VaYjYaL4Spk7WflFYJ2H