Virtual Host di Apache

Foto os

Anda memiliki IP publik statik yang akan digunakan untuk beberapa domain seperti www.rab.co.id, jabber.rab.co.id, dan debian.rab.co.id. Anggap saja situs akan dibangun menggunakan Drupal dan PostgreSQL.

Update 16-2-2010: Sebaiknya gunakan Virtualmin untuk solusi ISP yang lebih menyeluruh. Ikuti petunjuk instalasinya.

# apt-get install phppgadmin

Dengan cara ini Apache turut serta terpasang. Kemudian aktifkan modul virtual host:
# a2enmod vhost_alias

Tambahkan di /etc/apache2/apache2.conf:
ServerAdmin grananda@rab.co.id
 
<Directory />
          AllowOverride All
</Directory>

Sekarang buatlah /etc/apache2/sites-available/www.rab.co.id:
<VirtualHost *>
        ServerName www.rab.co.id
        DocumentRoot /home/vhost/www.rab.co.id/htdocs/
        ErrorLog /var/log/apache2/www-error.log
        CustomLog /var/log/apache2/www-access.log combined
</VirtualHost>

Kemudian aktifkan situsnya:

# a2ensite www.rab.co.id
# /etc/init.d/apache2 restart

Lakukan hal serupa untuk domain lainnya.

Apache sebagai Proxy
Sekarang contoh lainnya yang mungkin cocok untuk situasi yang Anda hadapi. Anda memiliki mesin lain di LAN yang berisi sistem voucher elektrik dimana Anda hanya memiliki 1 IP publik tersebut. Padahal sistem voucher memungkinkan member mengisi pulsa melalui web. Di sini Apache dapat dimanfaatkan sebagai proxy yang akan meneruskan permintaan browser ke mesin voucher. Katakanlah http://mgl.rab.co.id berarti http://192.168.0.17 bagi Apache. Mudah-mudahan Anda paham maksudnya.

Aktifkan terlebih dahulu modulnya:

# a2enmod proxy_http

Kemudian buatlah /etc/apache2/sites-available/mgl.rab.co.id:
<VirtualHost *>
        ServerName mgl.rab.co.id
        ErrorLog /var/log/apache2/mgl-error.log
        CustomLog /var/log/apache2/mgl-access.log combined
        ServerSignature On
        ProxyRequests Off
        ProxyPreserveHost On
        ProxyPass / http://192.168.0.17/
        ProxyPassReverse / http://192.168.0.17/
        <Proxy *>
            Order deny,allow
            Allow from all
        </Proxy>
</VirtualHost>

Restart daemon-nya:
# /etc/init.d/apache2 restart

Situs Default
Kadang pengunjung tidak menuliskan awalan www seperti http://rab.co.id, dan mungkin ada juga yang iseng dengan langsung menyebutkan IP-nya http://202.59.201.67. Kita bisa membuat Apache menggiring permintaan yang tidak terdaftar di virtual host ke http://www.rab.co.id dengan membuat /var/www/index.php:

<? header("location: http://www.rab.co.id"); ?>

DNS
Sebelum melakukan ini semua pastikan domain-domain tersebut sudah terdaftar di Bind (DNS). Tanpanya konfigurasi Apache ini tidak akan berfungsi.

SSL
Anda memiliki situs untuk para member. Saatnya mengaktifkan SSL untuk menghindari aktifitas penyadapan.

Terlebih dahulu buatlah file sertifikat:

# apt-get install ssl-cert
# make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/private/apache.pem

Aktifkan modulnya:
# a2enmod ssl

Edit /etc/apache2/sites-available/default dengan baris-baris awal menjadi seperti ini:
NameVirtualHost *:80
<VirtualHost *:80>
..

Kemudian salin untuk versi SSL-nya:
# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default-ssl

dan edit /etc/apache2/sites-available/default-ssl menjadi:
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/ssl/private/apache.pem
..

Aktifkan:
# ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/000-default-ssl

Lakukan juga perubahan pada /etc/apache2/sites-available/www.rab.co.id:
<VirtualHost *:80>
..
<VirtualHost *:443>
        ServerName www.rab.co.id
        DocumentRoot /home/vhost/www.rab.co.id/htdocs/
        CustomLog /var/log/apache2/www-ssl-access.log combined
        ErrorLog /var/log/apache2/www-ssl-error.log
        SSLEngine on
        SSLCertificateFile /etc/ssl/private/apache.pem
</VirtualHost>

Restart Apache:
# /etc/init.d/apache2 restart

Kemudian cobalah melalui browser dengan memberi awalan https seperti https://www.rab.co.id.