Nginx: Membuat Virtual Host
Membuat satu VPS bisa menghost 2 atau lebih website gampang dilakukan dengan nginx. Untuk melakukannya kita akan memanfaatkan fitur dari nginx yaitu virtual host. Contoh ini dilakukan pada VPS dengan sistem operasi 18.0 atau diatasnya
Install Nginx
root@192.168.1.12:~$ sudo apt install nginx
Setelah proses instalasi selesai, cek apakah nginx sudah terinstall dan berjalan dengan benar
root@192.168.1.12:~$ systemctl status nginx
Folder untuk website
Navigasi ke folder /var/www/html/
kemudian buat 2 folder baru atau bisa dengan perintah
root@192.168.1.12:~$ mkdir /var/www/html/web1.iniserver.com
root@192.168.1.12:~$ mkdir /var/www/html/web2.iniserver.com
kita akan membuat 1 file html untuk masing-masing folder yang sudah dibuat sebelumnya
root@192.168.1.12:~$ nano /var/www/html/web1.iniserver.com/index.html
kemudian file index.html
isi dengan
<html>
<title>web1.iniserver.com</title>
<h1>Welcome to the web1.iniserver.com.</h1>
</html>
dan untuk folder we2.iniserver.com
juga
root@192.168.1.12:~$ nano /var/www/html/web2.iniserver.com/index.html
kemudian file index.html
isi dengan
<html>
<title>web2.iniserver.com</title>
<h1>Welcome to the web2.iniserver.com.</h1>
</html>
Jika kedua folder tadi sudah diisi dengan file index.html
, kita akan mengubah hak akses untuk masing-masing folder supaya bisa diakses melalu browser
root@192.168.1.12:~$ chown -R www-data:www-data /var/www/html/web1.iniserver.com
root@192.168.1.12:~$ chown -R www-data:www-data /var/www/html/web2.iniserver.com
Konfigurasi untuk virtual host nginx
Buat konfigurasi untuk masing-masing website
root@192.168.1.12:~$ nano /etc/nginx/sites-available/web1.iniserver.com.conf
kemudian isi dengan
server {
listen 80;
listen [::]:80;
root /var/www/html/web1.iniserver.com;
index index.html index.htm;
server_name web1.iniserver.com;
location / {
try_files $uri $uri/ =404;
}
}
dan untuk web2.iniserver.com
root@192.168.1.12:~$ nano /etc/nginx/sites-available/web2.iniserver.com.conf
kemudian isi dengan
server {
listen 80;
listen [::]:80;
root /var/www/html/web2.iniserver.com;
index index.html index.htm;
server_name web2.iniserver.com;
location / {
try_files $uri $uri/ =404;
}
}
Untuk menghidupkan konfigurasinya kita bisa dengan membuat symlink
antara sites-available
dengan sites-enabled
root@192.168.1.12:~$ ln -s /etc/nginx/sites-available/web1.iniserver.com.conf /etc/nginx/sites-enabled/
root@192.168.1.12:~$ ln -s /etc/nginx/sites-available/web2.iniserver.com.conf /etc/nginx/sites-enabled/
Validasi konfigurasi dengan
root@192.168.1.12:~$ nginx -t
Jika tidak ada masalah maka akan keluar pesan seperti
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Restart nginx
root@192.168.1.12:~$ systemctl restart nginx
Coba kunjugi domain web1.iniserver.com
danweb2.iniserver.com
jika tidak ada kesalahan maka akan keluar halaman html yg sudah dibuat sebelumnya. Nama domain dan sub domain bisa disesuaikan dengan yang kita punya. Jika tidak mempunyai domain hal ini bisa juga dilakukan dengan alamat IP
dari vps kita, dan untuk membuat virtual host nya kita bisa menggunakan port, misal 192.168.1.12:99
dan 192.168.1.12:98
. pada konfigurasi virtual host nya tinggal diubah listen
portnya ke port yang dinginkan dan ganti server_name
dengan alamat IP
. Jangan lupa untuk membuka firewall pada port yang ingin digunakan.
Menghubungkan dengan PHP-FPM
Tambahkan konfigurasi virtual host untuk website yang dinginkan bisa mengeksekusi file php
dengan:
server {
listen 80;
root /var/www/html/web1.iniserver.com;
index index.html index.htm index.php;
server_name web1.iniserver.com;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 600;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;
}
location / {
try_files $uri $uri/ =404;
}
}
Contoh menambahkan support php pada folder web1.iniserver.com
. Jangan lupa restart php-fpm
dan nginx
(contoh menggunakan php7.3).
root@192.168.1.12:~$ systemctl restart nginx
root@192.168.1.12:~$ systemctl restart php7.3-fpm
Selesai!!!!