Taufik Mulyana
Taufik Mulyana
Linux System Administrator, Interested in Linux, Cloud, Containers
March 24, 2019 3 min read

Konfigurasi Apache sebagai Reverse Proxy

menjadikan apache sebagai reverse proxy

Reverse proxy merupakan sebuah server yang berada didepan web server bertugas meneruskan permintaan dari client ke web server, server yang berada dibelakang reverse proxy bisa dibilang lebih aman karena tidak berhadapan langsung dengan client, tapi reverse proxylah yang berhadapan dengan client, lalu bagaimana cara membuat server untuk dijadikan sebagai reverse proxy ? kita bisa menggunakan software reverse proxy,  kebanyakan orang menggunakan nginx untuk dijadikan sebagai reverse proxy, bagaimana dengan apache ? tentu bisa, apache juga bisa melakukan apa yang nginx bisa lakukan 😀 kita hanya perlu menggunakan modul yang bernama mod_proxy dan mod_proxy_http.

disini saya menggunakan distribusi Ubuntu 18.04.

Mengaktifkan Modul

aktifkan modul mod_proxy dan mod_proxy_http

$ sudo a2enmod proxy
$ sudo a2enmod proxy_http

Konfigurasi Virtualhost

buat virtualhost baru, sebagai contoh saya akan membuat virtualhost baru dengan nama proxy.conf

$ sudo vim /etc/apache2/sites-available/proxy.conf

saya memiliki sebuah web server yang berjalan pada port 8080, ketika pengunjung mengakses nothinux.id pada port 80, akan diteruskan oleh reverse proxy ke 127.0.0.1:8080, berikut konfigurasinya

<VirtualHost *:80>
    ServerName nothinux.id
    ServerAlias www.nothinux.id
    ServerAdmin admin@nothinux.id

    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>

 

Penjelasan direktif yang digunakan diatas

  • ProxyPreserveHost membuat Apache meneruskan header Host asli ke server yang berada dibelakangnya
  • ProxyPass merupakan konfigurasi proxy utama, ketika pengunjung mengakses root url (/) akan diteruskan ke http://127.0.0.1:8080, sebagai contoh ketika pengunjung mengakses https://nothinux.id/about akan diarahkan ke http://127.0.0.1:8080/about,
  • ProxyPassReverse diharuskan mempunyai konfigurasi yang sama dengan ProxyPass, direktif ini memberitahukan apache untuk memodifikasi respon header dari server dibelakangnya, untuk memastikan jika server dibelakangnya mengirim respon header pengalihan lokasi, peramban pengunjung akan dialihkan ke halaman yang seharusnya, sebagai contoh ketika ada sebuah pengalihan halaman, seperti misal /about akan dialihkan ke /tentang, ketika pengunjung mengakses https://nothinux.id/about dan diteruskan ke server yang berada dibelakang reverse proxy, dan server dibelakangnya memberikan respon pengalihan halaman ke http://127.0.0.1:8080/tentang, maka apache akan memodifikasi respon agar pengunjung diarahkan ke https://nothinux.id/tentang jadi bukan ke http://127.0.0.1:8080/tentang

jika anda ingin menggunakan ssl tinggal menambahkan konfigurasi ssl, berikut contoh konfigurasinya

<IfModule mod_ssl.c>
  <VirtualHost *:443>
    ServerName nothinux.id
    ServerAlias www.nothinux.id
    ServerAdmin admin@nothinux.id

    SSLEngine On
    SSLCertificateFile /etc/apache2/ssl/nothinux.id.pem
    SSLCertificateKeyFile /etc/apache2/ssl/nothinux.id-key.pem

    SSLProtocol all -SSLv2 -SSLv3
    SSLCompression off
    SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
    SSLHonorCipherOrder on

    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
  </VirtualHost>
</IfModule>

jika sudah tinggal aktifkan virtualhost dengan perintah berikut

$ sudo a2ensite proxy.conf

lalu jalankan ulang layanan apache

$ sudo systemctl restart apache2

konfigurasi apache sebagai reverse proxy telah selesai, semoga bermanfaat 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *