Node.js yang merupakan suatu aplikasi atau tools yang digunakan untuk membuat suatu program aplikasi yang support berbagai platform, terutama aplikasi berbasis web dengan menggunakan JavaSript sebagai backend system atau server-side.
Node.js ini menjadi primadona bagi programmer dalam beberapa tahun yang terakhir. Apabila semakin banyak layanan-layanan seperti Framework atau REST API yang mendukung Node.js. Node.js ini juga telah menjadi pilihan solusi untuk beberapa cloud computing untuk melakukan serverless dalam pembuatan aplikasi tersebut dengan Node.js.
Proxy merupakan server yang menyediakan suatu layanan untuk dapat meneruskan setiap permintaan user kepada server lain yang terdapat di internet atau intranet. Sistem kerja dari proxy ialah pengguna yang menggunakan layanan suatu proxy kemudian meminta file atau juga data yang terdapat di internet maka proxy ini akan meneruskannya ke internet jadi seolah-olah proxy ini yang memintanya.
Artikel ini membahas tentang konfigurasi untuk membuat virtual host untuk aplikasi berbasis web yang menggunakan Node.js yang akan dijalankan melalui web server yakni Apache. Untuk aplikasi tersebut bisa berjalan, maka membutuhkan yang namanya Apache module http_proxy yang berguna untuk menjalankan aplikasi web yang menggunakan Node.js dengan memasukkan nama server atau custom domain sendiri.
Kamu bisa melakukan konfigurasi itu secara mandiri dengan memberikan beberapa clue dalam bentuk coding yang terdapat di bawah ini.
Kode perintah :
<VirtualHost *:80> ServerAdmin webmin@localhost ServerName www.example.con ServerAlias www.example.con DocumentRoot /var/nodejs2 ProxyPass / http://0.0.0.0:3100/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Yang ada tulisan warna-warni, silahkan ganti yang sesuai dengan server yang terpasang Node.js di dalamnya dengan memberi keterangan yang terdapat di bawah ini.
Tutorial ini, penulis menggunakan layanan VPS dari AWS EC2 untuk melakukan konfigurasi Virtual Host untuk Node.js di dalam Apache.
KETERANGAN :
1. Tulisan yang berwarna orange itu ganti alamat email yang sesuai dengan domain milik. Jika, kamu belum memiliki domain, bisa diberikan nama email yang berakhiran dengan @localhost.
2. Tulisan yang berwarna orange itu ganti dengan nama domain atau alamat IP publik (bagi yang belum memiliki domain).
3. Tulisan yang berwarna cokelat itu ganti dengan alamat IP publik dari server milik kamu baik itu shared hosting, cloud hosting, server lokal, maupun VPS.
4. Tulisan yang berwarna abu-abu itu ganti dengan nilai port yang sedang berjalan website melalui Node.js.
Penulis menyarankan untuk membuat virtual host khusus Node.js di Apache, lebih baik membuat file virtual host .conf itu terpisah dari file virtual host .conf yang lain, apalagi file virtual host .conf yang masih default.
Setelah melakukan konfigurasi untuk menjalankan server khusus aplikasi berbasis web dengan menggunakan Node.js di port 80 secara virtual. Jangan lupa untuk mengaktifkan Apache module HTTP Proxy terlebih dahulu.
Kode perintah untuk mengaktifkan Apache module HTTP Proxy :
sudo a2enmod http_proxy
Apabila file Apache module HTTP Proxy itu tidak ada atau tidak ditemukan di dalam Apache milik server kamu, bisa melakukan install atau memasang module tersebut dulu. Baru melakukan pengaktifan module tersebut lagi.
Setelah itu, melakukan mengaktifkan sites Apache 2 khusus Node.js seperti biasa, agar virtual host tersebut bisa aktif dan bisa diakses oleh siapa saja (jika permission tidak dibatasi atau diprivasi di dalam virtual host) di browser.
Bagaimana dengan nilai port 80 itu nilai port default dari Apache untuk PHP? Apa tidak bentrok layanan server jika dijalankan PHP dan Node.js secara bersamaan?
Jawabannya, apabila tidak menggunakan HTTP Proxy, maka terjadi bentrok yang dimana salah satu dari kedua server tersebut harus mengisi nilai port 80. Misalkan, kamu menjalankan server untuk project aplikasi berbasis web dengan PHP di port 80 dan menjalankan server untuk project aplikasi berbasis web dengan Noje.js di port yang sama, maka terjadi bentrok yang mengakibatkan aplikasi web yang pakai Node.js tidak bisa berjalan server-nya di port 80.
Jadi untuk mengatasi masalah yang diatas, maka membutuhkan HTTP Proxy di Apache agar server untuk project aplikasi berbasis web dengan Noje.js itu bisa berjalan secara virtual di Apache dengan nilai port 80. Walaupun, nilai port asli dari Node.js itu berbeda dengan nilai port di virtual host tersebut.
Hal ini memungkinkan hanya berlaku untuk DNS Management dari Cloudflare, karena penulis telah mencobanya itu dan berhasil. Belum tahu dengan DNS Management dari provider lain.
Kesimpulan
Bagi kamu ingin menjalankan aplikasi berbasis web dengan menggunakan Node.js dengan menggunakan custom domain sendiri atau alamat IP publik, bisa melakukan itu dengan membuat virtual host khusus Node.js itu sendiri di dalam Apache dengan bantuan Proxy sehingga tidak perlu untuk menampilkan nilai port yang asli dari Node.js lagi.
Apalagi Node.js ini memiliki kelebihan seperti bisa diterapkan serverless, banyak framework yang mendukung JavaScript, banyak penyedia layanan bot yang bisa dijalankan dengan bantuan Node.js, dan sebagainya. Ini sangat cocok untuk kamu yang bercita-cita menjadi JavaScript Programmer atau JavaScript Fullstack Developer pada masa mendatang.