Cara Menambahkan Domain Baru di Nginx Server
Arsitektur Multi-Domain: Konfigurasi Virtual Host Server Block, Pemetaan Document Root, Isolasian Log File, dan Enkripsi SSL HTTPS
Saat mengoperasikan server VPS Linux untuk kebutuhan produksi, menyewa satu server terpisah untuk setiap satu situs web baru tentu merupakan pemborosan resource komputasi dan biaya harian yang besar. Salah satu keunggulan utama dari web server modern seperti Nginx adalah kemampuannya untuk menginang (*host*) puluhan hingga ratusan nama domain yang berbeda secara simultan di dalam satu mesin server tunggal yang sama.
Mekanisme isolasi multi-domain ini berjalan di atas sebuah sistem modular bernama Server Blocks (atau lebih familiar disebut *Virtual Hosts* pada Apache). Melalui perantara *Server Block*, Nginx mampu membaca string header nama host yang dikirimkan oleh browser pengunjung, lalu mencocokkannya secara presisi dengan jalur folder penyimpanan (*document root*) serta setelan backend PHP-FPM yang terisolasi. Panduan komprehensif ini akan mengulas langkah demi langkah menambahkan domain baru ke server Nginx Anda harian, lengkap dengan praktik terbaik sekuritisasi.
1. Pembuatan Struktur Folder dan Pembatasan Izin Akses
Langkah pertama adalah membuat ruang rumah terisolasi sebagai wadah penampung file source code situs baru Anda, lengkap dengan folder khusus untuk memisahkan berkas log pemicu kerusakan:
# 1. Membuat direktori root web dan folder logs secara bersamaan
sudo mkdir -p /var/www/domainbaru.com/public_html
sudo mkdir -p /var/www/domainbaru.com/logs
# 2. STANDARDISASI PERMISSIONS: Ubah kepemilikan grup ke user web server (www-data)
sudo chown -R www-data:www-data /var/www/domainbaru.com
# 3. Setel hak izin folder ke 755 agar file internal aman dari modifikasi luar ilegal
sudo chmod -R 755 /var/www/domainbaru.com
Buat satu file HTML uji coba di dalam folder tersebut untuk mempermudah pengetesan visual visual nantinya:
sudo nano /var/www/domainbaru.com/public_html/index.html
<!DOCTYPE html>
<html>
<head><title>Sukses Multi-Domain</title></head>
<body style="font-family: sans-serif; text-align: center; padding: 100px;">
<h1 style="color: #4361ee;">🎉 Selamat! Server Block Nginx Berhasil Berjalan!</h1>
<p>Domain Baru <strong>domainbaru.com</strong> sukses dikonfigurasi di VPS Anda.</p>
</body>
</html>
2. Membuat File Konfigurasi Server Block Baru
Manajemen file konfigurasi Nginx yang rapi mewajibkan Anda membuat file baru di dalam direktori `sites-available`, lalu mengaktifkannya lewat metode tautan simbolik ke folder `sites-enabled`:
sudo nano /etc/nginx/sites-available/domainbaru.com
Tempel struktur template dasar HTTP Nginx berikut, sesuaikan bagian string nama domain serta jalur foldernya:
server {
listen 80;
# Mendengarkan request dari alamat domain non-www maupun www
server_name domainbaru.com www.domainbaru.com;
# Mengarahkan rute menuju folder penampung index.html baru
root /var/www/domainbaru.com/public_html;
index index.html index.htm index.php;
# Mengisolasi log file per situs untuk mempermudah pencarian bug harian
access_log /var/www/domainbaru.com/logs/access.log;
error_log /var/www/domainbaru.com/logs/error.log;
location / {
try_files $uri $uri/ =404;
}
# Pengetatan Keamanan Dasar: Blokir akses luar langsung ke file konfigurasi .htaccess
location ~ /\.ht {
deny all;
}
}
3. Aktivasi Konfigurasi dan Penyegaran Web Server
Langkah krusial berikutnya adalah membuat tautan pintasan (*symlink*) menuju folder aktif `sites-enabled`. Jangan lupa untuk selalu melakukan uji validasi sintaks sebelum memuat ulang daemon Nginx demi menghindari terjadinya kegagalan sistem global:
# 1. Menautkan file konfigurasi ke folder sites-enabled agar aktif
sudo ln -s /etc/nginx/sites-available/domainbaru.com /etc/nginx/sites-enabled/
# 2. UJI SINTAKS KODE: Pastikan keluar status 'syntax is ok' & 'test is successful'
sudo nginx -t
# 3. Reload daemon Nginx tanpa memutus koneksi trafik harian yang sedang berjalan
sudo systemctl reload nginx
4. Pemasangan Sertifikat SSL Enkripsi HTTPS Let's Encrypt
Untuk membuang peringatan keamanan *"Not Secure"* pada browser pengunjung, gunakan modul Certbot untuk mengklaim sertifikat SSL gratis secara otomatis harian:
# Eksekusi certbot client khusus untuk plugin nginx
sudo certbot --nginx -d domainbaru.com -d www.domainbaru.com
*Saat muncul interaksi prompt di layar terminal, ketik angka opsi pilihan nomor 2 (Redirect) guna mengunci instruksi agar Nginx otomatis mengalihkan paksa seluruh trafik HTTP biasa ke jalur enkripsi aman biner HTTPS.*
5. Contoh Konfigurasi Lanjutan untuk Aplikasi Web Berbasis PHP-FPM
Apabila domain baru yang Anda pasang dialokasikan untuk memuat CMS dinamis seperti WordPress, Joomla, atau Laravel, Anda wajib membuka kuncian file konfigurasi server block Anda kembali dan menyisipkan modul pemrosesan Unix Socket PHP-FPM berikut:
# Contoh Blok Penanganan Skrip PHP internal di dalam blok 'server { ... }'
location / {
# Memastikan fitur tautan permalink kustom WordPress tidak memicu galat error 404
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# KUNCI UTAMA: Sesuaikan dengan nomor versi PHP-FPM yang aktif di server Anda
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Resolusi Masalah Klasik: Mengapa Domain Baru Malah Menampilkan Isi Web Lama?
Salah satu kendala paling populer dalam manajemen multi-domain adalah situasi di mana domain baru yang baru Anda panggil justru merendahkan visual konten situs lama Anda. Atasi kendala tersebut dengan memeriksa 3 poin evaluasi berikut:
- Periksa Konflik Aturan "default_server": Nginx mendeteksi file konfigurasi bawaan
/etc/nginx/sites-enabled/defaultsebagai penangkap utama jika ada domain asing yang mengetuk gerbang server tanpa terdaftar. Pastikan file default tersebut telah Anda hapus bersih dari direktori agar Nginx tidak mengalami disorientasi perutean data. - Validasi Kesalahan Ketik Parameter "server_name": Periksa kembali baris teks instruksi
server_namepada berkas konfigurasi baru Anda. Kesalahan penulisan satu karakter atau lupa mengakhiri baris dengan simbol tanda titik koma **(;)** akan membuat Nginx mengabaikan berkas tersebut dan melompati pembacaan domain baru Anda harian. - Eksekusi Pembersihan Cache Memori: Terkadang konfigurasi Nginx di internal server VPS Linux Anda sudah berjalan 100% sempurna, namun browser komputer Anda masih menyimpan rekaman koki DNS cache lama harian. Bersihkan cache peramban internet Anda secara menyeluruh atau uji validitas respons server menggunakan utilitas perintah terminal:
curl -I http://domainbaru.com.
