Reverse Proxy adalah metode di mana sebuah server menerima permintaan (request) dari client, lalu meneruskannya ke server backend internal. Metode ini umum digunakan untuk mengekspose aplikasi web internal seperti Emby, Nextcloud, atau Laravel Echo menggunakan domain lokal, tanpa harus membuka port backend secara langsung ke jaringan.
Table of Contents
Pada artikel ini, saya akan mendemonstrasikan cara mengonfigurasi Apache2 sebagai Reverse Proxy untuk aplikasi internal yang berjalan di 192.168.2.11:8096, dan dapat diakses melalui domain lokal emby.server.lan.
1. Mengaktifkan Modul Proxy Apache
Sebelum membuat VirtualHost Reverse Proxy, beberapa modul Apache yang dibutuhkan harus diaktifkan terlebih dahulu:
sudo a2enmod proxy proxy_http proxy_wstunnel
sudo systemctl restart apache2
Modul-modul ini memungkinkan Apache menangani forwarding HTTP dan koneksi WebSocket, yang dibutuhkan oleh banyak aplikasi web modern.
2. Membuat VirtualHost Reverse Proxy
Buat file konfigurasi VirtualHost baru:
sudo nano /etc/apache2/sites-available/emby.server.lan.conf
Isi dengan konfigurasi berikut:
<VirtualHost *:80>
ServerName emby.server.lan
ProxyPreserveHost On
ProxyPass / http://192.168.2.11:8096/
ProxyPassReverse / http://192.168.2.11:8096/
ErrorLog ${APACHE_LOG_DIR}/app_error.log
CustomLog ${APACHE_LOG_DIR}/app_access.log combined
</VirtualHost>
Penjelasan Konfigurasi
- ProxyPreserveHost On
- Memastikan header
Hostasli dari client tetap diteruskan ke server backend.
- Memastikan header
- ProxyPass
- Meneruskan request dari client ke aplikasi internal.
- ProxyPassReverse
- Menyesuaikan header response dari backend agar tetap valid di sisi client.
3. Mengaktifkan Site Reverse Proxy
Aktifkan VirtualHost dan reload Apache:
sudo a2ensite emby.server.lan.conf
sudo systemctl reload apache2
Sekarang aplikasi dapat diakses melalui:
http://emby.server.lan
tanpa harus membuka port 8096 secara langsung.
4. Bonus: Reverse Proxy untuk Aplikasi WebSocket
Beberapa aplikasi seperti Laravel Echo, Socket.IO, Livewire, atau dashboard real-time membutuhkan dukungan WebSocket.
Tambahkan konfigurasi berikut di dalam blok <VirtualHost>:
ProxyPass "/ws/" "ws://IP:PORT/"
ProxyPassReverse "/ws/" "ws://IP:PORT/"
Konfigurasi ini memastikan koneksi WebSocket dapat diteruskan dengan benar melalui Apache.
5. Konfigurasi Ultra Minimal (HTTP Saja)
Untuk aplikasi HTTP sederhana yang tidak menggunakan WebSocket, konfigurasi Reverse Proxy dapat dibuat lebih ringkas seperti berikut:
<VirtualHost *:80>
ServerName emby.server.lan
ProxyPass / http://192.168.2.11:8096/
ProxyPassReverse / http://192.168.2.11:8096/
</VirtualHost>
Konfigurasi ini sudah cukup untuk sebagian besar aplikasi web internal berbasis HTTP.
6. Kenapa Menggunakan Apache Reverse Proxy?
Menggunakan Apache sebagai Reverse Proxy memberikan beberapa keuntungan utama:
- Menyembunyikan IP dan port server backend internal
- Menjalankan banyak aplikasi di satu web server dengan domain berbeda
- Mempermudah implementasi SSL/HTTPS menggunakan Let’s Encrypt
- Meningkatkan keamanan dengan kontrol akses terpusat
- Cocok untuk homelab, jaringan internal, hingga environment produksi
Kesimpulan
Dengan mengonfigurasi Apache2 sebagai Reverse Proxy, aplikasi web internal dapat diakses dengan aman melalui domain lokal tanpa harus membuka port backend secara langsung. Pendekatan ini sangat ideal untuk homelab, jaringan internal kantor, maupun server produksi yang membutuhkan manajemen akses terpusat, skalabilitas, dan keamanan yang lebih baik. Jika dikombinasikan dengan HTTPS, firewall, dan kebijakan akses yang tepat, Apache Reverse Proxy menjadi solusi yang powerful dan fleksibel untuk mengelola layanan web modern secara efisien.