Server Blocks Nginx memungkinkan Anda untuk menjalankan lebih dari satu situs web pada satu server. 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 memberikan panduan langkah demi langkah tentang cara menyiapkan server blocks Nginx (mirip dengan Apache Virtual Hosts) di Ubuntu 18.04.
Prasyarat
Pastikan Anda telah memenuhi prasyarat berikut sebelum melanjutkan dengan tutorial ini:
- Memiliki nama domain pointing ke IP server publik Anda. Dalam tutorial ini kita akan menggunakan
example.com
. - Anda telah menginstal Nginx dengan mengikuti instruksi dari tutorial ini.
- Anda masuk sebagai pengguna dengan hak istimewa sudo.
Dalam beberapa dokumentasi, Anda kadang akan melihat Server Blocks
dirujuk sebagai Virtual host
. Namun virtual host sendiri adalah istilah dari Apache.
Buat Struktur Direktori
Root dokumen adalah direktori tempat file situs web disimpan yang disajikan sebagai respons terhadap permintaan. Kita dapat mengatur root dokumen ke lokasi mana pun yang kita inginkan tetapi dalam panduan ini kita akan menggunakan struktur direktori berikut:
/var/www/ ├── domain1.com │ └── public_html ├── domain2.com │ └── public_html ├── domain3.com │ └── public_html
Pada dasarnya kami akan membuat direktori terpisah untuk setiap domain yang ingin kami 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 domain.
Mari kita buat direktori root untuk domain kita domain1.com
dan domain2.com
:
sudo mkdir -p /var/www/domain1.com/public_html
sudo mkdir -p /var/www/domain2.com/public_html
Untuk tujuan pengujian, kami akan membuat file index.html
di dalam direktori root dokumen domain.
Buka editor Anda dan buat file demo:
/var/www/domain1.com/public_html/index.html
<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Selamat Datang</title> </head> <body> <h1>Domain1 telah berjalan!</h1> </body> </html>
Sedangkan untuk domain2 mari kita buat juga file demo yang sama seperti domain1.
/var/www/domain2.com/public_html/index.html
<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Selamat Datang</title> </head> <body> <h1>Domain2 telah berjalan!</h1> </body> </html>
Dalam panduan ini, kami menjalankan perintah sebagai pengguna sudo dan file serta direktori yang baru dibuat dimiliki oleh pengguna root.
Untuk menghindari masalah izin, kami dapat mengubah kepemilikan direktori root dokumen domain menjadi Nginx user (www-data
):
sudo chown -R www-data: /var/www/domain1.com
lakukan juga untuk direktori kedua :
sudo chown -R www-data: /var/www/domain2.com
Membuat Server Block
Secara default pada sistem Ubuntu, konfigurasi server blocks Nginx 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 server block berikut:
/etc/nginx/sites-available/domain1.com
server { listen 80; listen [::]:80; root /var/www/domain1.com/public_html; index index.html; server_name domain1.com www.domain1.com; access_log /var/log/nginx/domain1.access.log; error_log /var/log/nginx/domain1.com.error.log; location / { try_files $uri $uri/ =404; } }
kemudian pengaturan untuk server block domain2.com silahkan gunakan pengaturan berikut :
/etc/nginx/sites-available/domain2.com
server { listen 80; # tidak lagi menggunakan listen [::]:80; untuk server block kedua dan seterusnya # listen [::]:80; root /var/www/domain2.com/public_html; index index.html; server_name domain2.com www.domain2.com; access_log /var/log/nginx/domain2.access.log; error_log /var/log/nginx/domain2.com.error.log; location / { try_files $uri $uri/ =404; } }
Anda dapat memberi nama file konfigurasi sesuai selera Anda, tetapi saran terbaik adalah menggunakan nama domain. Bayangkan Anda memiliki 10 domain dengan file log yang sama, akan terjadi bencana jika 2 atau lebih situs sedang mengalami masalah. Pastinya akan sangat kesulitan untuk meneliti log yang banyak.
Untuk mengaktifkan file server block baru, kita perlu membuat symbolic link dari file ke direktori sites-enabled
, yang akan dicari dan dibaca oleh Nginx saat startup:
sudo ln -s /etc/nginx/sites-available/domain1.com /etc/nginx/sites-enabled/
lakukan juga untuk domain2.com
sudo ln -s /etc/nginx/sites-available/domain2.com /etc/nginx/sites-enabled/
Test konfigurasi Nginx untuk sintaks yang 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
Mulai ulang layanan Nginx agar perubahan diterapkan:
sudo systemctl restart nginx
untuk memverifikasi server block berfungsi seperti yang diharapkan, buka http://domain1.com
dan http://domain2.com
di browser pilihan Anda.
Conclusion
Anda telah belajar cara membuat konfigurasi server block Nginx untuk meng-host beberapa domain pada satu server Ubuntu. Anda dapat mengulangi langkah-langkah yang kami uraikan di atas dan membuat blok server tambahan untuk semua domain Anda.
Jika Anda ingin mengamankan situs web Anda dengan sertifikat LetsEncrypt SSL gratis, Anda dapat memeriksa panduan berikut: Amankan Nginx dengan Let’s Encrypt di Ubuntu 18.04