Nginx
Panduan Konfigurasi Nginx Server Block (Virtual Host)
Nginx Server Block adalah konfigurasi yang memungkinkan satu server Nginx melayani beberapa domain atau situs web yang berbeda. Dalam panduan ini, kita akan mengkonfigurasi Server Block untuk domain app.akhmad.cloud.
I. Persiapan Awal dan Instalasi
Langkah pertama adalah memastikan Nginx sudah terinstal dan direktori untuk situs web baru sudah siap.
1. Instalasi dan Update
Pastikan sistem Anda up-to-date dan Nginx terinstal:
sudo apt update
sudo apt install nginx2. Membuat Direktori Situs Web
Kita akan membuat direktori root untuk situs web baru dan mengatur izinnya. Direktori ini adalah tempat file HTML, PHP, dan aset lainnya akan disimpan.
sudo mkdir -p /var/www/app.akhmad.cloud/public
sudo chown -R www-data:www-data /var/www/app.akhmad.cloud/public/var/www/app.akhmad.cloud/public: Ini adalah jalur Document Root atau tempat Nginx akan mencari file situs web.chown -R www-data:www-data: Memberikan kepemilikan kepada pengguna Nginx (www-data) untuk memastikan Nginx dapat membaca dan menyajikan file.
3. Membuat File Index Uji Coba
Buat file index.html sederhana untuk menguji apakah Server Block berfungsi:
echo "<h1>Welcome to app.akhmad.cloud</h1>" | sudo tee /var/www/app.akhmad.cloud/public/index.htmlII. Konfigurasi Server Block
Server Block Nginx disimpan di direktori /etc/nginx/sites-available/.
1. Membuat File Konfigurasi
Buat file konfigurasi baru menggunakan nama domain Anda. Gunakan editor seperti nano:
sudo nano /etc/nginx/sites-available/app.akhmad.cloud2. Isi File Konfigurasi (app.akhmad.cloud)
Salin dan tempel konfigurasi berikut ke dalam file. Konfigurasi ini dirancang untuk melayani aplikasi PHP yang menggunakan PHP-FPM.
server {
# Mendefinisikan port untuk mendengarkan (standar HTTP)
listen 80;
listen [::]:80;
# Nama domain yang akan dilayani oleh blok ini
server_name app.akhmad.cloud;
# Lokasi dasar tempat file situs web berada
root /var/www/app.akhmad.cloud/public;
# Pengaturan dasar kinerja dan keamanan
sendfile on; # Mengaktifkan transfer file yang efisien
client_max_body_size 20M; # Batas ukuran upload
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
# Urutan file yang akan dicari jika URL adalah direktori
index index.php index.html;
charset utf-8;
# Blok Lokasi Utama: Mengarahkan permintaan
location / {
# Mencoba mencari file yang diminta. Jika tidak ada, fallback ke index.php
try_files $uri $uri/ /index.php?$query_string;
}
# Blok untuk file-file statis umum, mematikan log
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
# Mengarahkan semua Error 404 ke index.php (umum pada framework)
error_page 404 /index.php;
# Blok Lokasi PHP: Mengirim permintaan PHP ke PHP-FPM
location ~ \.php$ {
# Mengarahkan permintaan ke prosesor PHP-FPM (versi 8.3)
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_hide_header X-Powered-By;
}
# Blok Keamanan: Mencegah akses ke file tersembunyi (dot files)
location ~ /\.(?!well-known).* {
deny all;
}
}III. Mengaktifkan dan Menguji Server Block
Setelah file konfigurasi dibuat, kita perlu mengaktifkannya dan me-restart Nginx.
1. Mengaktifkan Konfigurasi (Symlink)
Nginx hanya membaca konfigurasi yang ada di direktori /etc/nginx/sites-enabled/. Kita membuat symbolic link (shortcut) dari file yang baru kita buat ke direktori ini:
sudo ln -s /etc/nginx/sites-available/app.akhmad.cloud /etc/nginx/sites-enabled/Catatan: Perintah yang Anda berikan menyertakan link untuk
akhmad.clouddanapp.akhmad.cloud. Pastikan Anda hanya membuat link untuk domain yang benar-benar ingin Anda aktifkan. Saya hanya menyertakanapp.akhmad.clouddi sini.
2. Menguji Konfigurasi
Selalu uji sintaks konfigurasi Nginx sebelum me-restart untuk menghindari downtime:
sudo nginx -tJika outputnya adalah: syntax is ok dan test is successful, Anda siap untuk melanjutkan.
3. Restart Nginx
Muat ulang layanan Nginx untuk menerapkan konfigurasi baru:
sudo systemctl restart nginxSekarang, jika Anda mengakses http://app.akhmad.cloud di browser Anda (setelah memastikan DNS domain telah diarahkan ke IP server Anda), Nginx akan melayani konten dari /var/www/app.akhmad.cloud/public/index.html.