Server block Nginx memungkinkan Anda untuk menjalankan lebih dari satu situs web pada satu mesin. Dengan Server Blocks, Anda dapat menentukan root dokumen situs (direktori yang berisi file situs web), membuat kebijakan keamanan terpisah untuk setiap situs, menggunakan sertifikat SSL berbeda untuk setiap situs dan banyak lagi.

Dalam tutorial ini, kami akan menunjukkan cara mengatur server blocks Nginx di  Ubuntu 20.04.

Prasyarat

Pastikan Anda telah memenuhi prasyarat berikut sebelum melanjutkan dengan tutorial ini:

Dalam beberapa dokumentasi, Anda akan melihat server block dirujuk sebagai Virtual host. Virtual host adalah istilah Apache.

Buat Struktur Direktori

Root document adalah direktori tempat file situs web untuk nama domain disimpan dan disajikan sebagai respons terhadap permintaan.

Root document dapat berupa direktori apa saja di server Ubuntu Anda. Dalam panduan ini kita akan menggunakan struktur direktori berikut:

/var/www/
  ├── example.com
  │ └── public_html
  ├── example2.com
  │ └── public_html
  ├── example3.com
  │ └── public_html

Kita akan membuat direktori terpisah untuk setiap domain yang akan di-host di server kami di dalam direktori /var/www. Dalam setiap direktori ini, kami akan membuat direktori public_html yang akan menyimpan file situs web.

Mulai dengan membuat direktori root untuk domain example.com:

sudo mkdir -p /var/www/example.com/public_html

Selanjutnya, buat file index.html di dalam direktori root dokumen domain dengan text editor nano.

sudo nano /var/www/example.com/public_html/index.html
Copy dan paste baris berikut:
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to example.com</title>
  </head>
  <body>
    <h1>Success! example.com home page!</h1>
  </body>
</html>

Untuk menghindari masalah izin, ubah kepemilikan direktori root dokumen domain ke Nginx (www-data) dengan menggunakan perintah chown berikut :

sudo chown -R www-data: /var/www/example.com

Buat Blok Server

Secara default pada sistem Ubuntu, server Nginx memblok file konfigurasi disimpan di direktori /etc/nginx/sites-available, yang diaktifkan melalui symbolic links ke direktori /etc/nginx/sites-enabled/.

Buka editor pilihan Anda dan buat file blok server berikut

sudo nano /etc/nginx/sites-available/example.com.conf

copy dan paste konten berikut

server {
    listen 80;

    server_name example.com www.example.com;

    root /var/www/example.com/public_html;

    index index.html;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
}
  • server_name: Isi dengan Domain yang ingin anda buat di nginx.
  • root: Direktori dari file domain.
  • access_logerror_log: lokasi untuk menyimpan file log dari nginx.

Anda dapat memberi nama file konfigurasi sesuka Anda, tetapi sangat disarankan untuk menggunakan nama domain.

Aktifkan file blok server baru dengan membuat symbolic link dari file ke direktori sites-enabled:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

Uji konfigurasi Nginx untuk melihat semua sintaks sudah benar:

sudo nginx -t

Jika tidak ada kesalahan, hasilnya akan terlihat seperti ini:

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

Restart layanan Nginx agar perubahan diterapkan:

sudo systemctl restart nginx

Akhirnya untuk memverifikasi blok server berfungsi seperti yang diharapkan, buka http://example.com di browser pilihan Anda, dan Anda akan melihat sesuatu seperti ini:

nginx welcome page

Kesimpulan

Anda telah belajar cara membuat konfigurasi server block di Nginx untuk meng-host beberapa domain pada satu server Ubuntu 20.04.

Anda dapat mengulangi langkah-langkah yang kami uraikan di atas dan membuat server block tambahan untuk semua domain Anda.