Multi Domain dengan satu Web Server
Halo teman teman, kali ini saya ingin sharing sharing tentang webserver. Tahukah kalian saat kalian mengakses website, terkadang kalian melihat adanya subdomain contohnya domain.domainasli.com, ya didepan domain asli ada domain lagi. Sebenarnya ini tidak melulu menggunakan web-server yang berbeda loh. Kali ini saya akan sharing tentang bagaimana memanfaatkan satu web server agar bisa mempunyai multi domain (sub domain/domain lain). Karena dengan hal ini tentunya kita bisa menghemat resource VPS bukan, tanpa lama lama langsung saja kita ke cara instalasinya. Oiya, pada pembahasan kali ini, saya akan membahas webserver yang sering digunakan saja yaitu Nginx dan Apache.
Environment:
1. Nginx
2. Apache
3. Ubuntu Server with Public IP
4. Domain
5. Putty
Instalasi multi domain pada Nginx :
1. Pastikan kalian sudah menginstall nginx sebagai webserver pada VPS kalian:
$ sudo apt install -y nginx
2. Untuk keperluan SSL nantinya, silahkan install certbot untuk Nginx kalian:
$ sudo apt install certbot python3-certbot-nginx
3. Buatah root directory terlebih dahulu untuk keperluan testing subdomain nantinya:
Default root directory Nginx adalah pada /var/www/html namun kali ini saya ingin merubahnya ke /var/www/html/sub1/ untuk Domain pertama, dan /var/www/html/sub2/ untuk Domain kedua.
Disini, saya sudah membuat root directory dengan isi index.html yang sederhana guna untuk keperluan testing nanti. Perlu diperhatikan, bahwa nama folder, isi file adalah bebas.
4. Buat server block pada Nginx:
Server block pada nginx terletak pada /etc/nginx/sites-available/
Buatlah file .conf dalam directory tersebut sesuai kebutuhan subdomain.
Ini adalah tampilan server block pada sub domain pertama saya.
Berikut syntax server block nya:
Harap sesuaikan dengan kebutuhan (root dan server_name).
Setelah server block subdomain pertama tersimpan, silahkan buat server block kedua sama seperti cara diatas. Sesuaikan saja dengan kebutuhan.
Ini adalah tampilan server block subdomain kedua saya:
Setelah server block keduanya terbuat, silahkan save dan exit.
5. Link file server block pada sites-availavble ke sites-enabled:
$ ln -s /etc/nginx/sites-available/sub1.domain.com.conf /etc/nginx/sites-enabled/sub1.domain.com.conf$ ln -s /etc/nginx/sites-available/sub2.domain.com.conf /etc/nginx/sites-enabled/sub2.domain.com.conf
6. Apply, dengan melihat log terlebih dahulu:
$ nginx -t
7. Reload service Nginx:
$ service nginx reload
8. Point ke DNS Management:
Buat A Record dan CNAME Record ke arah IP Publik VPS kalian:
9. Tes akses:
Terlihat, bahwa server blok yang kita buat sudah berhasil diakses. Jika kalian ingin instalasi SSL pada subdomain kalian, bisa tetap lanjut membaca sampai habis.
10. Instalasi SSL menggunakan Certbot:
Pada point ke 2 kalian sudah instalasi certbot untuk nginx, disinilah gunanya Certbot, yaitu untuk generate sertifikat SSL kalian.
$ certbot certonly
Bagian ini adalah proses generate sertifikat SSL, pilih nomor 3 lalu ikuti saja langkah langkah yang ada. Registrasikan setiap subdomain yang ada.
11. Cek sertifikat yang sudah ter-generate:
Letak file ssl yang telah ter-generate berada pada /etc/letsencrypt/live/
Terlihat saya sudah berhasil generate sertifikat SSL.
12. Edit server block SSL:
Kita buka kembali server block yang berada pada /etc/nginx/sites-available/
Lalu buka masing masing server block subdomain, dan edit menjadi seperti ini:
Lakukan pengeditan di semua file conf server block kalian, tidak lupa untuk merubah pengaturan sesuai environment kalian (directory ssl, server_name, directory root, etc).
13. Buatlah Auto Redirect ke HTTPS:
Silahkan kalian pergi ke /etc/nginx/sites-available/default
Tambahkan pada baris paling bawah:
Silahkan sesuaikan dengan environment masing masing, kalian bisa menambahkan sesuai sub-domain yang kalian punya pada bagian bawah.
14. Cek Akses
Terlihat bahwa koneksi sudah ada lambang gemboknya, yang berarti koneksi diakses menggunakan HTTPS pada Nginx. Dan voilaa, kita sudah berhasil instalasi subdomain beserta SSL nya.
Instalasi multi domain pada Apache :
1. Instalasi Apache:
$ sudo apt install apache2
2. Instalasi Certbot:
$ sudo apt-get install certbot python3-certbot-apache apache2
3. Siapkan root directory:
Pada kasus kali ini, saya akan menggunakan root directory yang sama dengan praktik sebelumnya (Nginx) yaitu /sub1/ dan /sub2/ untuk setiap domain.
4. Buat virtual host baru:
Berbeda dengan Nginx, letak sites-available Apache berada pada /etc/apache2/sites-available/
Kalian bisa copy-paste script:
$ cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/sub1.domain.com.conf$ cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/sub2.domain.com.conf
Terlihat, bahwa file .conf masing masing subdomain sudah saya copas dan siap di konfigurasi.
5. Konfigurasi masing masing server block:
Silahkan konfigurasi masing masing server block. Adapun hasil jadi pada kasus saya adalah seperti ini:
Sesuaikan dengan environment masing masing (DocumentRoot, ServerAdmin, ServerName etc). Lakukan di semua server block subdomain dengan menyesuaikan environment masing masingnya.
6. Enable semua konfigurasi yang ada:
$ a2dissite 000-default.conf$ a2ensite sub1.domain.com.conf$ a2ensite sub2.domain.com.conf$ systemctl restart apache2
7. Pastikan sudah point DNS:
Sama seperti point ke-8 pada Nginx.
8. Cek Akses:
Voila, sub domain menggunakan satu webserver (Apache) sudah berjalan, jika kalian ingin instalasi SSL pada masing masing subdomain pada Apache, silahkan baca sampai akhir.
9. Generate SSL Certbot:
Langkah sama seperti point 10 nginx.
$ certbot certonly
10. Buat file konfigurasi pada masing masing server block:
Buatlah sub1.domain.com-le-ssl.conf & sub2.domain.com-le-ssl.conf pada /etc/apache2/sites-available yang berisi:
Save. Exit.
Lalu linking ke sites-enabled:
$ ln -s /etc/apache2/sites-available/sub1.domain.com-le-ssl.conf /etc/apache2/sites-enabled/sub1.domain.com-le-ssl.conf$ ln -s /etc/apache2/sites-available/sub2.domain.com-le-ssl.conf /etc/apache2/sites-enabled/sub2.domain.com-le-ssl.conf
11. Buat auto redirect ke HTTPS:
Edit server block dari masing masing subdomain, Edit sub1.domain.com.conf & sub2.domain.com.conf menjadi:
Save, exit.
12. Apply:
$ sudo systemctl reload apache2
13. Cek Akses:
Voila, akses HTTPS sudah berhasil pada Apache dengan subdomain.
Terima kasih kepada para pembaca, semoga bermanfaat.
Terima kasih.