Definisi dan Fungsi Mod_Proxy
Mod_proxy adalah modul Apache HTTP Server yang berfungsi sebagai gateway atau perantara (proxy) untuk permintaan HTTP/HTTPS. Modul ini memungkinkan Apache bertindak sebagai reverse proxy, di mana server menerima permintaan dari klien dan meneruskannya ke server backend (seperti aplikasi Node.js, Python, atau Java) sebelum mengembalikan respons ke klien. Penggunaan utama mod_proxy meliputi load balancing, enkapsulasi keamanan, dan penyatuan beberapa layanan di bawah satu domain.
Sintaks Dasar Konfigurasi
Untuk mengaktifkan mod_proxy, pastikan modul proxy dan proxy_http telah dimuat. Berikut adalah contoh konfigurasi dasar dalam file virtual host Apache untuk meneruskan trafik ke aplikasi lokal pada port 3000:
<VirtualHost *:80>
ServerName domainanda.com
ProxyPreserveHost On
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>Tabel Perbandingan Fitur Mod_Proxy
| Fitur | Deskripsi |
|---|---|
| ProxyPass | Meneruskan permintaan masuk ke server backend. |
| ProxyPassReverse | Menyesuaikan header respons agar sesuai dengan URL publik. |
| ProxyPreserveHost | Meneruskan header Host asli ke server backend. |
| BalancerMember | Menentukan node dalam konfigurasi load balancing. |
Implementasi Load Balancing
Mod_proxy sangat efektif untuk mendistribusikan beban kerja ke beberapa server backend. Dengan menggunakan mod_proxy_balancer, Anda dapat memastikan ketersediaan layanan tetap terjaga jika salah satu server mengalami kegagalan.
<Proxy balancer://mycluster>
BalancerMember http://10.0.0.1:3000
BalancerMember http://10.0.0.2:3000
</Proxy>
ProxyPass / balancer://mycluster/Langkah Troubleshooting
- Cek Status Modul: Pastikan modul aktif dengan perintah
apachectl -M | grep proxy. - Periksa Log: Jika terjadi error 502 (Bad Gateway), periksa file log di
/var/log/apache2/error.loguntuk memastikan server backend sedang berjalan. - Izin Koneksi: Pastikan firewall (seperti UFW atau SELinux) mengizinkan koneksi antara Apache dan port backend yang dituju.
- Header Host: Selalu gunakan
ProxyPreserveHost Onjika aplikasi backend Anda bergantung pada header Host untuk routing internal.