Proxy server adalah server yang berfungsi sebagai perantara antara PC client dan server. Penggunaan proxy server ini biasanya bertujuan untuk meningkatkan keamanan server atau sebagai cache untuk meringankan kinerja server.
Reverse Proxy
Reverse Proxy adalah salah satu jenis proxy server yang berfungsi sebagai perantara antara client dengan satu atau lebih web server:
Fungsi Reverse Proxy
Beberapa fungsi utama dari reverse proxy adalah:
1. Load balancing
Reverse proxy ditempatkan di bagian depan web server dan bertugas mendistribusikan semua permintaan / request dari client ke tiap web server yang ada di group tersebut. Dengan cara seperti ini akan dicapai kinerja server yang optimal dengan mendapatkan kecepatan yang paling baik serta untuk memastikan server tidak akan pernah down. Jika dalam group tersebut ada salah satu web server yang overload, maka proxy server akan meredirect traffik yang masuk ke webserver tersebut menuju ke webserver lainnya.
Reverse proxy ditempatkan di bagian depan web server dan bertugas mendistribusikan semua permintaan / request dari client ke tiap web server yang ada di group tersebut. Dengan cara seperti ini akan dicapai kinerja server yang optimal dengan mendapatkan kecepatan yang paling baik serta untuk memastikan server tidak akan pernah down. Jika dalam group tersebut ada salah satu web server yang overload, maka proxy server akan meredirect traffik yang masuk ke webserver tersebut menuju ke webserver lainnya.
2. Web acceleration
Reverse proxy mampu mengkompress inbound dan outbound data, sebaik cache tools. Dan hal ini akan menambah kecepatan baik dalam hal request content maupun dalam masalah trafik antara client dan web server. Selain itu reverse proxy juga bisa menangani tugas lain seperti enkripsi SSL tanpa memberikan beban tambahan pada web server sehingga kecepatan bisa tetap terjaga.
Reverse proxy mampu mengkompress inbound dan outbound data, sebaik cache tools. Dan hal ini akan menambah kecepatan baik dalam hal request content maupun dalam masalah trafik antara client dan web server. Selain itu reverse proxy juga bisa menangani tugas lain seperti enkripsi SSL tanpa memberikan beban tambahan pada web server sehingga kecepatan bisa tetap terjaga.
3. Security dan Anonimity
Reverse proxy akan menjadikan web server Anda lebih aman karena internet hanya bisa mendeteksi atau mengenal IP reverse proxy Anda dan tidak bisa menjangkau web server secara langsung.
Reverse proxy akan menjadikan web server Anda lebih aman karena internet hanya bisa mendeteksi atau mengenal IP reverse proxy Anda dan tidak bisa menjangkau web server secara langsung.
Forwad Proxy
Sebuah Forward Proxy adalah sebuah server proxy yang akan meneruskan permintaan klien ke server untuk membangun komunikasi. Klien akan memilih sumber daya yang diinginkan kemudian forward proxy menyambungkan ke server target.
Open Proxy
Open Proxy adalah sejenis forward proxy yang terbuka untuk semua pengguna internet. Open proxy ini sering di gunakan untuk pengguna internet untuk menyembunykan alamat IP mereka. Sehingga mereka tetap anonim selama aktivitas web mereka. Beberapa contoh open proxy
- Anonymous Proxy
Anonymous proxy adalah jenis proxy terbuka yang menyembunyikan alamat IP pengguna internet sehingga server target tidak bisa mengidentifikasi asal klien meminta. Namun, proxy anonim mengidentifikasi dirinya sebagai server proxy, tetapi masih berhasil mempertahankan anonimitas pengguna.
- Distorting Proxy
jenis server proxy ini mengenalkan dirinya sebagai proxy namun proxy ini mengungkapkan alamat ip proxy yang palsu dari klien ke server target
- Elite Proxy
Elite Proxy dapat memberikan anonimitas yang maksimal karena tidak mengindentifikasi dirinya sebagai proxy atau mengungkapkan alamat IP sebenarnya dari klien. Biasanya pengguna harus membayar untuk jenis proxy karena karang tersedia secara bebas di internet.
Apache HTTP Server As Reverse-Proxy Using mod_proxy Extension
Apache adalah server HTTP telah teruji dan dilengkapi dengan akses ke ekstensi yang sangat luas. Meskipun mungkin tidak memilih untuk menjalankan reverse proxy, administrator sistem yang sudah bergantung pada Apache dengan set fitur yang tersedia dapat menggunakannya sebagai pintu gerbang (gateway) ke server aplikasi.
Apache Working As A Reverse-Proxy Using mod_proxy
mod proxy adalah modul Apache untuk mengalihkan koneksi (e.g. a gateway, passing them through). Hal ini dimungkinkan untuk digunakan seperti modul dan konfigurasi lainnya yang cukup mendasar (atau standar), sesuai dengan yang lain. mod proxy bukan hanya satu modul tapi juga koleksi, masing-masing membawa satu set fungsionalitas baru.
Beberapa modul ini adalah:
- mod_proxy: Modul utama proxy untuk Apache yang mengelola koneksi dan pengalihan (redirect).
- mod_proxy_http: Modul ini mengimplementasikan fitur proxy untuk protokol HTTP dan HTTPS.
- mod_proxy_ftp: Modul ini melakukan hal yang sama namun untuk protokol FTP.
- mod_proxy_connect: Modul ini digunakan untuk SSL tunneling.
- mod_proxy_ajp: Digunakan untuk bekerja dengan protokol AJP.
- mod_proxy_wstunnel: Digunakan untuk bekerja dengan web socket (yaitu WS dan WSS).
- mod_proxy_balancer: Digunakan untuk clustering dan load-balancing.
- mod_cache: Digunakan untuk caching.
- mod_header: Digunakan untuk mengelola header HTTP.
- mod_deflate: Digunakan untuk kompresi.
Installing Apache And mod_proxy
Updating The Operating-System
#apt-get update && apt-get upgrade -y
Getting The Essential Build Tools
Untuk mendapatkan paket penting untuk membangun aplikasi, diperlukan paket build-essential. Paket ini berisi alat yang diperlukan untuk menginstal beberapa hal dari sumber .
#apt-get install build-essential -y
Getting The Modules And Dependencies
Jalankan perintah berikut untuk mendapatkan modul dan dependencies.
#apt-get install libapache2-mod-proxy-html libxml2-dev
Configuring Apache To Proxy Connections
Mengaktifkan Modul
Sebelum mengkonfigurasi Apache, aktifkan modul yang diperlukan untuk keperluan selanjutnya. Verifikasi apakah semua modul terpasang dengan benar dan siap untuk diaktifkan.
Jalankan perintah berikut untuk mendapatkan daftar modul Apache yang tersedia:
#a2enmod<TAB><TAB>
Pada kondisi ini kita dapat melihat daftar modul yang tersedia untuk diaktifkan. Atau sebagai alternatif, Anda dapat menjalankan perintah berikut untuk mengaktifkan modul satu per satu:
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_ajp
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_html
Catatan: Beberapa modul cenderung diaktifkan secara default. Perintah dapat dilakukan 2 kali hanya untuk memastikan bahwa modul telah aktif.
Mengubah Konfigurasi Default
Pada langkah ini, kita akan melihat bagaimana memodifikasi file konfigurasi default
000-default
di dalam /etc/apache2/sites-enabled
untuk mengatur fungsi “proxying”.
Jalankan perintah berikut untuk mengedit host virtual Apache default menggunakan editor teks nano:
nano /etc/apache2/sites-enabled/000-default
Di sini, kita akan mendefinisikan host virtual proxy menggunakan
mod_virtualhost
dan mod_proxy
bersama-sama.
Copy-paste blok konfigurasi di bawah ini, ubah sesuai kebutuhan Anda:
<VirtualHost [IP-SERVER]:[PORT]>
ProxyPreserveHost On
ServerName localhost
# Servers to proxy the connection, or;
# List of application servers:
# Usage:
# Sesuaikan IP dan port yang tersedia
# ProxyPass / http://[IP Addr.]:[port]/
# ProxyPassReverse / http://[IP Addr.]:[port]/
# Example:
ProxyPass / http://IP-REMOTE:[PORT]/
ProxyPassReverse / http://IP-REMOTE:[PORT]/
</VirtualHost>
#service restart apache2
Catatan: Untuk mempelajari lebih lanjut tentang konfigurasi virtual host, Anda dapat melihat manual Apache terperinci mengenai masalah ini.
Mengaktifkan SSL Reverse-Proxy Support
Jika Anda berurusan dengan koneksi dan sertifikat SSL, Anda juga perlu mengaktifkan virtual host sekunder dengan pengaturan di bawah ini.
Ulangi langkah-langkah dari langkah sebelumnya namun gunakan opsi konfigurasi berikut:
Listen 443
NameVirtualHost IP-SERVER:443
<VirtualHost IP-SERVER:443>
ProxyPreserveHost On
ProxyVia On
ProxyRequests Off
RewriteEngine On
SSLEngine On
# Set the path to SSL certificate
# Usage: SSLCertificateFile /path/to/cert.pem
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
# Servers to proxy the connection, or;
# List of application servers:
# Usage:
# ProxyPass / http://[IP Addr.]:[port]/
# ProxyPassReverse / http://[IP Addr.]:[port]/
# Example:
ProxyPass / http://IP-REMOTE:[PORT]/
ProxyPassReverse / http://IP-REMOTE:[PORT]/
# Or, balance the load:
# ProxyPass / balancer://balancer_cluster_name
</VirtualHost>
Restart apache
Load-Balancing
Dalam komputasi , load balancing meningkatkan distribusi beban kerja melalui beberapa sumber daya komputasi, seperti komputer, cluster komputer , koneksi jaringan , unit pemrosesan pusat , atau disk drive. Load balancing bertujuan untuk mengoptimalkan penggunaan sumber daya, memaksimalkan throughput , meminimalkan waktu respon, dan menghindari kelebihan sumber daya tunggal. Menggunakan beberapa komponen dengan load balancing, membentuk satu komponen dapat meningkatkan kehandalan dan ketersediaan melalui redundansi (High Availability).
Load balancing berbeda dari bonding link dalam load balancing yang membagi lalu lintas antar antarmuka jaringan pada soket jaringan ( model OSI layer 4), sedangkan bonding link menyiratkan pembagian lalu lintas antar antarmuka fisik pada tingkat yang lebih rendah, baik per paket ( model OSI Layer 3) atau pada data link ( model OSI Layer 2) dengan protokol seperti shortest path bridging.
Load balancing biasanya melibatkan perangkat lunak atau perangkat keras khusus, seperti switch multilayer atau proses server Domain Name System
Jika Anda memiliki beberapa server back-end, cara yang baik untuk mendistribusikan koneksi mereka melalui proxy adalah menggunakan fitur load balancing Apache.
Edit setting virtual-host seperti langkah sebelumnya, tapi kali ini menggunakan contoh konfigurasi di bawah ini:
<VirtualHost SERVER-IP:[PORT]>
# Apply VH settings as desired
# However, configure ProxyPass argument to
# use "mycluster" to balance the load
ProxyPreserveHost On
ProxyVia On
ProxyRequests Off
RewriteEngine On
<Proxy balancer://mycluster>
# Define back-end servers:
# Server 1, sesuaikan port yang tersedia
BalancerMember http://IP-SERVER-1:[PORT]/
# Server 2, sesuaikan port yang tersedia
BalancerMember http://IP-SERVER-2:[PORT]/
</Proxy>
ProxyPass /mycluster balancer://mycluster/
ProxyPassReverse /mycluster/ balancer://mycluster/
</VirtualHost>
Restart Apache
Setelah Anda menyelesaikan konfigurasi, Anda perlu me-restart server agar perubahan mulai berlaku.
Jalankan perintah berikut untuk me-restart Apache:
#service apache2 restart
Sekarang anda dapat mengunjungi VPS dan Apache akan melakukan koneksi reverse proxy ke server aplikasi back-end.
Monitoring load balancing dan status server
Siapkan user (misalnya admin) dan password untuk balancer-manager dengan perintah:
#mkdir -p /etc/apache2/passwd
#touch /etc/apache2/passwd/passwords
#htpasswd -c /etc/apache2/passwd/passwords admin
#touch /etc/apache2/passwd/passwords
#htpasswd -c /etc/apache2/passwd/passwords admin
Untuk memonitoring kinerja server dan statusnya, telah tersedia aplikasi built-in dalam apache yaitu balancer-manager dan server-status. Konfigurasinya adalah sebagai berikut:
<VirtualHost SERVER-IP:[PORT]>
# Apply VH settings as desired
# However, configure ProxyPass argument to
# use “mycluster” to balance the load
# However, configure ProxyPass argument to
# use “mycluster” to balance the load
ProxyPreserveHost On
ProxyVia On
ProxyRequests Off
RewriteEngine On
ProxyVia On
ProxyRequests Off
RewriteEngine On
<Proxy balancer://mycluster>
# Define back-end servers:
# Server 1, sesuaikan port yang tersedia
BalancerMember http://IP-SERVER-1:[PORT]/
# Server 1, sesuaikan port yang tersedia
BalancerMember http://IP-SERVER-1:[PORT]/
# Server 2, sesuaikan port yang tersedia
BalancerMember http://IP-SERVER-2:[PORT]/
BalancerMember http://IP-SERVER-2:[PORT]/
</Proxy>
#Balancer manager monitoring
<Location /balancer-manager>
SetHandler balancer-manager
<Location /balancer-manager>
SetHandler balancer-manager
AuthType basic
AuthName “Balancer Manager Authentication”
AuthUserFile “/etc/apache2/passwd/passwords”
# Anonymous *
Require valid-user
Order allow,deny
allow from all
AuthName “Balancer Manager Authentication”
AuthUserFile “/etc/apache2/passwd/passwords”
# Anonymous *
Require valid-user
Order allow,deny
allow from all
</Location>
#Server status monitoring
<Location /server-status>
SetHandler server-status
<Location /server-status>
SetHandler server-status
Order allow,deny
allow from all
</Location>
allow from all
</Location>
ProxyPass /server-status !
ProxyPass /balancer-manager !
ProxyPass /mycluster balancer://mycluster/
ProxyPassReverse /mycluster/ balancer://mycluster/
ProxyPass /balancer-manager !
ProxyPass /mycluster balancer://mycluster/
ProxyPassReverse /mycluster/ balancer://mycluster/
</VirtualHost>
Restart apache
Testing load balancing
http://SERVER-IP:[PORT]/balancer-manager
http://SERVER-IP:[PORT]/server-status
http://SERVER-IP:[PORT]/mycluster
http://SERVER-IP:[PORT]/server-status
http://SERVER-IP:[PORT]/mycluster
Selamat berkreasi !!!
0 Comments