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 20.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.
0 Comments