Tutorial Konfigurasi Server Block NginX (Virtual Host) AlmaLinux 9 Dan Rocky Linux 9
Server block NginX memilik fungsi yang sama dengan virtual host pada apache, Mendukung Web-Server menjalankan banyak domain dengan policy yang berbeda seperti root direktori.
Kebutuhan / Prasyarat
- Sistem Operasi Almalinux 9 atau Rocky Linux 9, Untuk cara installnya bisa cek artikel Instalasi Almalinux 9 atau Artikel Instalasi Rocky Linux 9
- Sudah Terinstallnya Nginx, Untuk cara installnya dilihat dibagian install Nginx di Artikel Install LEMP.
Sekenario Konfigurasi.
Sekenariao yang disiapkan adalah dua domain yaitu contoh.com dan contoh2.com dimana kedua domain di pointing ke ip server nginx melalui /etc/hosts. Kedua domain akan memiliki root directory terpisah, seperti tampilan gambar dibawah ini.
Instalasi Nginx di Almalinux dan Rocky Linux ini memiliki default directory /usr/share/nginx/html sebagai yang tercatat pada file konfigurasi /etc/nginx/nginx.conf
Pembuatan Root Directory Untuk Server Block Nginx.
Tahap pertama adalah membuat root direktory untuk setiap domain contoh.com dan contoh2.com dengan perintah berikut.
# mkdir -p /home/contoh.com/public
# mkdir -p /home/contoh2.com/public
Membuat root direktori bisa diubah path-nya sesuai dengan kebutuhan.
Membuat user yang nantinya bisa melakukan modifikasi atau perubahan terhadap script jadi tidak perlu login as root. user yang dibuat adalah contoh dan contoh2 dan memiliki home dir dari direktori yang dibuat diatas /home/contoh.com dan home/contoh2.com
# useradd --home-dir /home/contoh.com contoh
# useradd --home-dir /home/contoh2.com contoh2
Setelah direktori dibuat sesuaikan ownership dengan kebutuhan, Pada dasarnya agar root direktori domain bisa diakses dari luar jaringan user atau group dari nginx bisa disematkan di ownership direktori. Contoh perintahnya seperti dibawah.
# chown -R $USER:nginx /home/contoh.com/public
# chown -R $USER:nginx /home/contoh2.com/public
# chown -R contoh:nginx /home/contoh.com/public
# chown -R contoh2:nginx /home/contoh2.com/public
$USER adalah user dari system user yang nantinya dapat memodifikasi file script yang berada di direktori. Pada contoh ini kedua direktori dimiliki masing-masing oleh user contoh dan contoh2 yang sudah dibuat. Penggunaan ownership seperti ini untuk lebih mudah menentukan hak akses.
Berikutnya Pengaturan Permission direktori public jadikan ke 755.
# chmod 755 /home/contoh.com/public
# chmod 755 /home/contoh2.com/public
Konfigurasi Tambahan Selinux.
Jika System Selinux dalam status enforcing. Pastikan Policy file context direktori dan file didalamnya sudah tepat yaitu httpd_sys_content_t atau httpd_sys_rw_content_t, Berikut ini cara merubah file context direktori public dari setiap domain.
# semanage fcontext -a -t httpd_sys_rw_content_t "/home/contoh.com/public(/.*)?"
# semanage fcontext -a -t httpd_sys_rw_content_t "/home/contoh2.com/public(/.*)?"
Setelah itu untuk refresh policy selinux terbaru gunakan perintah
# restorecon -R -v /home/
Berikut ini hasil out put eksekusi dari perubahan permission sampai penambahan fcontext selinux.
Membuat Server Block Nginx Kedua Domain.
Server Block Bisa dibuat dari mengambil setting default yang ada di dalam file /etc/nginx/nginx.conf kemudia temukan tag server didalamnya seperti dibawah ini.
server { listen 80; listen [::]:80; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
Kalian bisa memanfaatkan tag server ini untuk membuat file konfigurasi baru server block kedua domain.
Lanjut membuat file konfigurasi server block di dalam /etc/nginx/conf.d gunakan editor file apapun seperti contoh dibawah ini.
# nano /etc/nginx/conf.d/contoh.com
# nano /etc/nginx/conf.d/contoh2.com
Lalu isikan dengan isi konfigurasi contoh berikut ini
server { listen 80; listen [::]:80; server_name contoh.com www.contoh.com; root /home/contoh.com/public/; index index.php index.html; try_files $uri $uri/ /index.php?$args; access_log /var/log/nginx/contoh.com.access; error_log /var/log/nginx/contoh.com.error; location ~ \.(php|phar)(/.*)?$ { fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$; fastcgi_intercept_errors on; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass unix:/run/php-fpm/www.sock; } }
server { listen 80; listen [::]:80; server_name contoh2.com www.contoh2.com; root /home/contoh2.com/public/; index index.php index.html; try_files $uri $uri/ /index.php?$args; access_log /var/log/nginx/contoh2.com.access; error_log /var/log/nginx/contoh2.com.error; location ~ \.(php|phar)(/.*)?$ { fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$; fastcgi_intercept_errors on; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass unix:/run/php-fpm/www.sock; } }
Untuk Save dan keluar dari editor nano, Tekan Ctrl +X dilanjut prompt tekan Y dan Enter. Baris yang berisi contoh.com dan contoh2.com bisa diganti dan disesuaikan dengan kebutuhan atau perhatikan baris yang di highlight.
Lalu test kembali syntax agar menggangu servcice nginx dengan perintah dibawah ini.
# nginx -t
Pastikan hasilnya ok dan sukses.
Restart service nginx.
# systemctl restart nginx
Membuat file Halaman Test untuk Kedua domain.
Agar lebih mudah melihat hasilnya mari buat file index.php di setiap root directory domain. Gunakan editor file seperti vi, nano atau vim untuk melakukannya. Seperti contoh dibawah ini.
# nano /home/contoh.com/public/index.php
# nano /home/contoh2.com/public/index.php
Lalu isikan file tersebut dengan script html dan php untuk get version dibawah ini.
<!DOCTYPE html> <html> <head> <title>contoh.com</title> </head> <body> <h1> HALAMAN CONTOH.COM </h1> <h3> Server Block Bekerja !!! </h3> <?php echo "php versi sekarang : ".phpversion(); ?> </body> </html>
<!DOCTYPE html> <html> <head> <title>contoh2.com</title> </head> <body> <h1> HALAMAN CONTOH2.COM </h1> <h3> Server Block Bekerja !!! </h3> <?php echo "php versi sekarang : ".phpversion(); ?> </body> </html>
Setelah di salin untuk save file dan keluar dari prompt editor nano, tekan CTRL + X Lalu Lanjut prompt tekan Y dan Tekan Enter.
Hasil Test Server Block Nginx Melalui Browser
Silahkan akses domain dari browser seperti dalam contoh totutorial ini menggunakan contoh.com dan contoh2.com
http://contoh.com
http://contoh2.com
Dengan hasil gambar diatas menandakan server block sudah berhasil di konfigurasi dan berjalan dengan baik.
Ringkasan
Dari tutorial membuat Server Block Nginx ini anda sudah bisa membuat server block utuk domain anda. memang ada perbedaan utama antara setting nginx di os berbasis RHEL seperti almalinux da rocky linux dengan berbasis debian yaitu terletak di fitur selinux.