NGINX merupakah aplikasi web server populer yang berguna untuk meng-hosting website dengan request traffic yang tinggi. NGINX memiliki memiliki sejumlah fitur yang canggih yang dapat membuatnya dikonfigurasi menjadi web server, reverser proxy atau bahkan load-balancer.

Pada artikel kali ini, kami akan menjelaskan langkah-langkah menginstall NGINX dan juga memberikan konfigurasi dasar web server. Sebelum itu pastikan server Ubuntu tidak ada firewall yang memblok port 80.

Langkah 1 : Menginstall NGINX

NGINX sudah tersedia pada repositori default ubuntu, jadi bisa diinstall langsung dengan perintah apt.

~$ sudo apt update
~$ sudo apt install nginx

Setelah instalasi, pastikan service nginx sudah berjalan.

~$ sudo systemctl status nginx 

Bila kita mengakses server ubuntu yang baru saja diinstal NGINX dengan port 80 pada web browser, defaultnya akan menampilkan Welcome to nginx!. Itu artinya NGINX sudah berhasil diinstal dan sudah listen pada port 80.

Image Description

Tapi tentu saja kita tidak ingin hanya menampilkan Welcome to nginx pada website kita. Supaya bisa menampilkan konten website yang custom yang ditangani oleh NGINX, perlu ada konfigurasi virtual host.

Langkah 2 : Menyimpan konten website

Sebelum melakukan konfigurasi pada NGINX, yang pertama dilakukan adalah membuat root web directory untuk menyimpan konten website. Jalankan perintah berikut untuk berpindah direktori.

~$ cd /var/www/

Bila dilihat isi direktori tersebut ada sebuat direktori dengan nama html. Direktori ini merupakan default root web directory milik NGINX. Jadi konten Welcome to nginx! tersimpan di direktori html ini. Untuk melihatnya jalankan perintah di bawah ini.

$ ls -l html/
$ cat html/index.nginx-debian.html 

Harusnya output yang dikeluarkan adalah script html seperti ini.

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

Nah, harusnya pembaca sudah dapat gambaran bagaimana meletakkan konten website yang diinginkan. Jadi pada direktori www ini kita akan membuat direktori baru sesuai dengan nama domain yang dimiliki atau dengan nama apa saja yang merepresentasikan isi websitenya.

$ sudo mkdir web_dir
$ cd web_dir

Kemudian buat sebuah file dengan ekstensi html sebagai contoh konten website yang ingin ditampilkan.

$ sudo touch index.html

Kemudian salin script berikut.

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Bootstrap demo</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">
  </head>
  <body>
    <h1>Hello, world!</h1>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3" crossorigin="anonymous"></script>
  </body>
</html>

Lalu pastekan pada file html yang sudah dibuatkan sebelumnya.

$ sudo vim index.html 

Selanjutnya ubah permission root web directory agar bisa dibaca oleh NGINX.

$ cd ..
$ sudo chown -R www-data:www-data web_dir/
$ sudo chmod 755 web_dir/

Sampai langkah ini, kita sudah menyimpan konten website yang ingin ditampilkan nanti. Selanjutnya perlu dilakukan konfigurasi NGINX agar bisa membaca konten websitenya.

Langkah 3 : Konfigurasi virtual host NGINX

Virtual host adalah fitur NGINX yang berfungsi untuk  meng-host beberapa situs web di satu server. Dengan memanfaatkan virtual host ini, kita bisa membuat domain yang berbeda dengan konten yang berbeda juga agar bisa ditangani oleh satu web server yang sama.

Jalankan perintah ini untuk pindah ke direktori NGINX.

$ cd /etc/nginx/

Biasanya konfigurasi virtual host dilakukan pada direktori sites-available dan sites-enabled atau conf.d. Di artikel ini yang akan digunakan adalah sites-available dan sites-enabled.

Di dalam direktori sites-available ada satu file konfigurasi default virtual host NGINX. Kita akan menggunakan file tersebut, tapi ada baiknya dibackup dahulu.

$ sudo cp sites-available/default sites-available/default.bak

Kemudian edit isi dari file konfigurasi tersebut.

$ sudo vim sites-available/default

Selanjutnya salin contoh file konfigurasi berikut.

server {
        listen 80;
#       listen [::]:80;

        server_name nama_domain;

        root /var/www/web_dir;
        index index.html;

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

Kemudian pastekan pada file konfigurasi default. NGINX tidak akan menggunakan file konfigurasi pada direktori ini, melainkan pada direktori sites-enabled. Tapi, karena yang kita gunakan adalah file default, seharusnya file tersebut sudah tertaut dengan direktori sites-enabled. Tapi jika ingin menambah file konfigurasi yang berbeda dan ingin menghubungkannya dengan direktori sites-enabled, coba perintah di bawah ini.

$ sudo ln -s /etc/nginx/sites-available/file_konf /etc/nginx/sites-enabled/

Setelah itu periksa apakah file konfigurasinya benar dengan perintah ini.

sudo nginx -t

Pastikan outputnya test is successful. Lalu restart service NGINX.

$ sudo systemctl restart nginx

Kemudian tes akses websitenya dengan mengetikkan nama domain pada web browser. Jika berhasil, outputnya akan seperti ini.

Image Description

Sampai disini kita sudah berhasil menampilkan konten website yang sederhana. Demikian cara menginstall NGINX dan melakukan konfigurasinya.