Jump to content

Apache:Virtual Host: Difference between revisions

From Wiki
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
File Virtual Host berisi arahan konfigurasi untuk situs web, termasuk root dokumen situs, kebijakan keamanan, konfigurasi sertifikat SSL, dan banyak lagi. Setiap situs web yang dikonfigurasi dalam Apache Virtual Host beroperasi secara independen satu sama lain dengan pengaturan terpisah dan unik.
'''Host Virtual''' (Inggris: ''Virtual Host'') pada server web Apache adalah sebuah metode yang memungkinkan satu server fisik untuk melayani lebih dari satu domain atau situs web secara bersamaan. Konsep ini mendefinisikan identitas tambahan bagi server web, di mana setiap situs web dapat memiliki konfigurasi yang terpisah meskipun berjalan pada perangkat lunak server yang sama.


Fitur [[Apache]] Virtual Host memungkinkan webmaster untuk memaksimalkan sumber daya server dengan menjalankan beberapa situs web pada satu host, bukan beberapa host yang menjalankan beberapa situs web.
== Jenis Host Virtual ==
==Cara Membuat Struktur Direktori Situs Web di Ubuntu==
Apache mendukung dua metode utama dalam konfigurasi host virtual:
Saat Anda menjalankan beberapa situs web pada satu host, setiap situs web akan memiliki root dokumennya sendiri. Akar dokumen adalah direktori tempat file situs web untuk domain disimpan dan disajikan sebagai tanggapan atas permintaan.


Di bawah ini adalah contoh struktur direktori untuk beberapa situs web dengan konten dan domain yang unik.
# '''Berbasis Alamat IP''': Metode ini mengharuskan setiap situs web memiliki alamat IP yang unik.
# '''Berbasis Nama (Name-based)''': Metode ini memungkinkan beberapa situs web berjalan pada satu alamat IP dan port yang sama. Server membedakan situs yang diminta berdasarkan nama host yang dikirim oleh klien (peramban) dalam header HTTP.


<syntaxhighlight lang="bash">
Pada implementasi modern, metode berbasis nama lebih umum digunakan karena kelangkaan alamat IPv4. Namun, tantangan muncul ketika menggunakan protokol HTTPS karena enkripsi SSL terjadi sebelum ''header'' host dikirim. Untuk mengatasi hal ini, ekstensi protokol yang disebut ''Server Name Indication'' (SNI) digunakan, yang memungkinkan peramban mengirim nama host selama inisiasi koneksi SSL (handshake),.
/var/www/
├── domain.id
│  └── public_html
├── domain.my.id
│  └── public_html
</syntaxhighlight>


Seperti yang Anda lihat di atas, setiap domain akan memiliki foldernya sendiri dengan root dokumen yang disertakan.
== Struktur dan Konfigurasi ==
Dalam distribusi Debian, konfigurasi host virtual dikelola melalui direktori <code>/etc/apache2/sites-available/</code>. Setiap host virtual didefinisikan dalam sebuah blok <code><VirtualHost></code> di dalam berkas konfigurasi berekstensi <code>.conf</code>.


'''Contoh''': <code>/var/www/domain/public_html</code>
'''Direktif Utama''' Konfigurasi standar host virtual mencakup parameter-parameter berikut:


Jalankan perintah di bawah ini untuk membuat direktori untuk domain <code>domain.my.id</code> dengan root dokumennya.
* '''[[Apache: ServerName|ServerName]]''': Menentukan nama domain utama dari situs web (misalnya <code>www.falcot.org</code>).
* '''ServerAlias''': Menentukan nama alternatif untuk domain tersebut (misalnya <code>falcot.org</code>).
* '''DocumentRoot''': Menentukan lokasi direktori tempat berkas situs web disimpan (misalnya <code>/var/www/html</code> atau <code>/var/www/web/</code>),.
* '''LogFormat dan CustomLog''': Mengatur format dan lokasi penyimpanan catatan aktivitas (log) akses untuk memisahkan log antar host virtual.


<syntaxhighlight lang="bash">
Contoh konfigurasi dasar host virtual pada port 80:
sudo mkdir -p /var/www/domain.my.id/public_html
<code><VirtualHost *:80>
</syntaxhighlight>
ServerName www.falcot.org
ServerAlias falcot.org
DocumentRoot /srv/www/www.falcot.org
</VirtualHost></code>


Setiap root dokumen akan membutuhkan file <code>index.html</code> yang akan ditampilkan ke klien. Jalankan perintah di bawah ini untuk membuat file <code>index.html</code> untuk domain <code>domain.my.id</code>.
== Manajemen Situs ==
Apache di Debian menyediakan utilitas khusus untuk mengelola status host virtual:


<syntaxhighlight lang="bash">
* '''a2ensite''': Perintah ini digunakan untuk mengaktifkan sebuah situs dengan membuat tautan simbolis dari <code>sites-available</code> ke <code>sites-enabled</code>. Contoh: <code>a2ensite www.falcot.org</code>,.
sudo vim /var/www/domain.my.id/public_html/index.html
* '''a2dissite''': Perintah ini digunakan untuk menonaktifkan situs. Contoh: <code>a2dissite default</code>,.
</syntaxhighlight>


Kemudian salin dan tempel konten di bawah ini ke dalam file dan simpan. Di bawah ini hanyalah file HTML dasar untuk tujuan pengujian.
Setelah melakukan perubahan konfigurasi, seperti mengaktifkan atau menonaktifkan host virtual, layanan Apache harus dimulai ulang atau dimuat ulang (reload) agar perubahan diterapkan.


<syntaxhighlight lang="html">
== Implementasi SSL/HTTPS ==
<!DOCTYPE html>
Untuk mengamankan host virtual menggunakan HTTPS, modul SSL (<code>mod_ssl</code>) harus diaktifkan terlebih dahulu. Konfigurasi host virtual untuk HTTPS biasanya berjalan pada port 443 dan memerlukan direktif tambahan seperti <code>SSLEngine on</code> serta lokasi berkas sertifikat (<code>SSLCertificateFile</code>) dan kunci privat,. Dukungan SNI memungkinkan beberapa host virtual HTTPS berjalan pada satu alamat IP tanpa menimbulkan peringatan sertifikat pada peramban modern.
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to domain.my.id</title>
  </head>
  <body>
    <h1>Success! example.com home page!</h1>
  </body>
</html>
</syntaxhighlight>


Setelah Anda menyimpan file, siap mengonfigurasi [[Apache]] Virtual Host untuk mereferensikan konten ini. Untuk menghindari masalah izin apa pun, ubah kepemilikan direktori root dokumen domain dan semua file di dalam direktori menjadi pengguna apache (<code>www-data</code>):
== Prioritas Penanganan ==
 
Jika server menerima permintaan yang tidak cocok dengan <code>ServerName</code> atau <code>ServerAlias</code> manapun yang telah didefinisikan, Apache akan menggunakan konfigurasi dari host virtual yang didefinisikan pertama kali sebagai ''default'',.
<syntaxhighlight lang="bash">
sudo chown -R www-data: /var/www/example.com
</syntaxhighlight>
 
==Cara Membuat File Apache Virtual Host di Ubuntu==
Sekarang setelah Anda membuat konten domain di direktori di atas, buka dan konfigurasikan file konfigurasi Apache Virtual Host untuk konten domain di atas.
 
Di [[Ubuntu]], file konfigurasi Apache Virtual Hosts terletak di direktori <code>/etc/Apache2/sites-available</code>.
 
Untuk membuat file host virtual di direktori situs yang tersedia untuk konten di atas, jalankan perintah di bawah ini untuk membuat file konfigurasi Virtual Host spesifik situs
 
<syntaxhighlight lang="bash">
sudo nano /etc/apache2/sites-available/domain.my.id.conf
</syntaxhighlight>
 
Contoh konfigurasi yang harus bekerja dengan sebagian besar lingkungan ditunjukkan di bawah ini. Salin dan tempel konten di bawah ini ke dalam file di atas dan simpan.
 
<syntaxhighlight lang="apache">
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin [/cdn-cgi/l/email-protection [email protected]]
    DocumentRoot /var/www/example.com/public_html
 
    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
 
    ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
</syntaxhighlight>
 
Setelah file disimpan, Anda dapat pergi dan mengaktifkannya untuk menjadi virtual host.
 
Untuk mengaktifkan file host virtual baru, Anda menggunakan skrip pembantu <code>a2ensite</code> yang membuat tautan simbolis dari file host virtual ke direktori yang mendukung situs.
 
Jalankan perintah di bawah ini untuk mengaktifkan file konfigurasi untuk domain kita.
 
<syntaxhighlight lang="shell">
sudo a2ensite domain.my.id.conf
</syntaxhighlight>
 
Setelah itu, jalankan perintah di bawah ini untuk me-restart layanan Apache.
 
<syntaxhighlight lang="shell">
sudo systemctl restart apache2
</syntaxhighlight>


==Terkait==
==Terkait==
Line 111: Line 53:
[[Category:Website]]
[[Category:Website]]
[[Category:Tutorial]]
[[Category:Tutorial]]
[[Category:Apache]]

Latest revision as of 13:26, 12 December 2025

Host Virtual (Inggris: Virtual Host) pada server web Apache adalah sebuah metode yang memungkinkan satu server fisik untuk melayani lebih dari satu domain atau situs web secara bersamaan. Konsep ini mendefinisikan identitas tambahan bagi server web, di mana setiap situs web dapat memiliki konfigurasi yang terpisah meskipun berjalan pada perangkat lunak server yang sama.

Jenis Host Virtual

Apache mendukung dua metode utama dalam konfigurasi host virtual:

  1. Berbasis Alamat IP: Metode ini mengharuskan setiap situs web memiliki alamat IP yang unik.
  2. Berbasis Nama (Name-based): Metode ini memungkinkan beberapa situs web berjalan pada satu alamat IP dan port yang sama. Server membedakan situs yang diminta berdasarkan nama host yang dikirim oleh klien (peramban) dalam header HTTP.

Pada implementasi modern, metode berbasis nama lebih umum digunakan karena kelangkaan alamat IPv4. Namun, tantangan muncul ketika menggunakan protokol HTTPS karena enkripsi SSL terjadi sebelum header host dikirim. Untuk mengatasi hal ini, ekstensi protokol yang disebut Server Name Indication (SNI) digunakan, yang memungkinkan peramban mengirim nama host selama inisiasi koneksi SSL (handshake),.

Struktur dan Konfigurasi

Dalam distribusi Debian, konfigurasi host virtual dikelola melalui direktori /etc/apache2/sites-available/. Setiap host virtual didefinisikan dalam sebuah blok <VirtualHost> di dalam berkas konfigurasi berekstensi .conf.

Direktif Utama Konfigurasi standar host virtual mencakup parameter-parameter berikut:

  • ServerName: Menentukan nama domain utama dari situs web (misalnya www.falcot.org).
  • ServerAlias: Menentukan nama alternatif untuk domain tersebut (misalnya falcot.org).
  • DocumentRoot: Menentukan lokasi direktori tempat berkas situs web disimpan (misalnya /var/www/html atau /var/www/web/),.
  • LogFormat dan CustomLog: Mengatur format dan lokasi penyimpanan catatan aktivitas (log) akses untuk memisahkan log antar host virtual.

Contoh konfigurasi dasar host virtual pada port 80:

<VirtualHost *:80>
ServerName www.falcot.org
ServerAlias falcot.org
DocumentRoot /srv/www/www.falcot.org
</VirtualHost>

Manajemen Situs

Apache di Debian menyediakan utilitas khusus untuk mengelola status host virtual:

  • a2ensite: Perintah ini digunakan untuk mengaktifkan sebuah situs dengan membuat tautan simbolis dari sites-available ke sites-enabled. Contoh: a2ensite www.falcot.org,.
  • a2dissite: Perintah ini digunakan untuk menonaktifkan situs. Contoh: a2dissite default,.

Setelah melakukan perubahan konfigurasi, seperti mengaktifkan atau menonaktifkan host virtual, layanan Apache harus dimulai ulang atau dimuat ulang (reload) agar perubahan diterapkan.

Implementasi SSL/HTTPS

Untuk mengamankan host virtual menggunakan HTTPS, modul SSL (mod_ssl) harus diaktifkan terlebih dahulu. Konfigurasi host virtual untuk HTTPS biasanya berjalan pada port 443 dan memerlukan direktif tambahan seperti SSLEngine on serta lokasi berkas sertifikat (SSLCertificateFile) dan kunci privat,. Dukungan SNI memungkinkan beberapa host virtual HTTPS berjalan pada satu alamat IP tanpa menimbulkan peringatan sertifikat pada peramban modern.

Prioritas Penanganan

Jika server menerima permintaan yang tidak cocok dengan ServerName atau ServerAlias manapun yang telah didefinisikan, Apache akan menggunakan konfigurasi dari host virtual yang didefinisikan pertama kali sebagai default,.

Terkait

Source