Virtual host atau Server Block memungkinkan kita untuk menghosting beberapa website sekaligus dalam satu server. Ini sangat berguna jika kita memiliki sebuah Virtual Private Server (VPS) dan ingin memanfaatkan resources yang belum digunakan sepenuhnya.

Tapi jangan terlalu berlebihan sampai situ dulu, karena disini saya hanya ingin berbagi ilmu dari pengalaman saya membuat local documentation server, dimana saya mengkompile beberapa source kode website dokumentasi dan menyajikan langsung di local network menggunakan engin-X. Dan berikut langkah - langkahnya.

Mempersiapkan Folder Untuk Menyajikan Konten

Sebelum mengkonfigurasi virtual host yang akan kita buat, ada baiknya kita telah mempersiapkan konten yang akan di sajikan. Kamu bisa membuat satu folder berisi sebuah file index.html atau pada kasus saya, saya mengclone source kode dokumentasi hugo dan mengkompilenya.

Setelah memiliki konten untuk disajikan, lanjut dengan membuat folder untuk menghosting konten website yang telah disiapkan.

sudo mkdir -p /usr/share/nginx/gohugo.io

Nama folder bisa disesuaikan dengan domain website yang akan kita sajikan misal website.pertama atau helo.world atau sesuai keinginan. Disini saya akan mencocokan nama folder dengan domain web dokumentasi hugo, jadi saya tidak perlu mengakses website tersebut melalui internet.

Selanjutnya pindahkan konten folder kita ke folder hosting

cp -r public /usr/share/nginx/gohugo.io/html

Perintah diatas akan menyalin website dokumentasi hugo yang telah di kompile/build sebelumnya (pada folderpublic) ke hosting folder /usr/share/nginx/gohugo.io/html.

Menambahkan nama domain lokal di hosts file

Selanjutnya kita tambahkan nama domain yang tadi kita buat jadi nama folder ke hosts file.

sudo nano /etc/hosts

berikut contoh isi filenya:

127.0.0.1       kal.local
127.0.0.1       localhost
127.0.1.1       kal
127.0.0.1       kal.my.id.local
127.0.0.1       gohugo.io

Simpan dengan menekan CTRL+s dan CTRL+x pada keyboard.

Membuat File Konfigurasi

Agar Engine-X tahu konten mana yang akan disajikan ketika domain tersebut di kunjungi melalui website, maka kita perlu menambahkan konfigurasi virtual hosting seperti berikut.

sudo nano /etc/nginx/sites-available/gohugo.io.conf

Isi file konfigurasi seperti berikut:

##
# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
server {
		listen 80;
		listen [::]:80;

		server_name gohugo.io;

		root /usr/share/nginx/gohugo.io/html;
		index index.html;

		location / {
				try_files $uri $uri/ =404;
		}
}

Pada file konfigurasi diatas sesuaikan nama domain pada server_name dan root dimana konten file website tersimpan.

Nginx tidak langsung menyajikan website yang telah kita konfigurasi seperti yang telah kita lakukan diatas. Kita perlu memberi tahu Nginx untuk mengaktifkan website tersebut dengan membuat symlink file konfigurasi di folder sites-enabled seperti berikut:

sudo ln -s /etc/nginx/sites-available/gohugo.io.conf /etc/nginx/sites-enabled/

untuk menonaktifkan website, kita bisa menghapus symlink(symbolic link) tersebut di folder sites-enabled. tapi tidak untuk saat ini karena kita belum tahu hasilnya.

Restart Nginx Service

Sebelum kita merestart layanan nginx, kita cek dulu apakah konfigurasi yang kita lakukan sebeumnya sudah benar dan tidak ada typo dengan menjalankan perintah berikut:

sudo nginx -t

Jika output hasil perintah diatas seperti berikut ini maka semua konfigurasi sudah benar:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Langkah terakhir restart nginx service menggunakan perintah berikut:

sudo systemctl restart nginx

Penutup

Penutupan dari saya, saya hanya ingin menyampaikan terimakasih atas kesediaan membaca artikel ini. Saya sadari artikel ini tidaklah sempurna dan memang tidak saya bahas untuk yang kasus website dinamisnya juga karna saya juga belum tahu. mungkin di lain kesempatan.

Oh, untuk melihat hasilnya buka browser dan kunjugi domain website yang telah kita hosting menggunakan nginx. Pada kasus saya, saya bisa mengunjungi http://gohugo.io kapanpun tanpa perlu terhubung ke internet.

Jika kamu ingin menghosting website lain, cukup ulangi langkah - langkah yang telah dilakukan dari awal hingga akhir artikel ini.