SlideShare a Scribd company logo
1 of 6
Download to read offline
Configuring Nginx as Reverse Proxy and Load Balancing Web
                               Application


1. Apa sih Proxy Server

Pada jaringan komputer, proxy server adalah sebuah server (sebuah sistem komputer atau sebuah
aplikasi) yang bertugas sebagai penengah dari request yang datang dari client mencari data ke server
lain. Ketika sebuah client terhubung ke sebuah proxy server, meminta layanan-layanan, seperti file,
koneksi, halaman web atau data lain yang boleh diakses dan berasal dari sebuah server lain, proxy server
akan mengevaluasi permintaan tersebut sebagai dengan cara mempermudah pengaksesan dan
mengontrol kompleksitas permintaan tersebut. Saat ini kebanyakan proxy adalah web proxy, sebagai
sebuah alat yang memfasilitasi pengaksesan content-content dari World Wide Web.

2. Jenis-Jenis Proxy

Ada 3 macam jenis proxy yang dibedakan berdasarkan tata letaknya.

   •   Forward Proxy
       Forward Proxy adalah proxy yang bertugas meneruskan permintaan konektivitas client ke server-
       server yang di kehendaki oleh client, forward proxy memiliki kemampuan untuk mengakses
       content-content kemana saja (dalam hal ini semua server pada internet)




                                                                             [4]



   •   Open Proxy
       Open proxy adalah sebuah forwarding proxy yang bisa diakses oleh siapapun di dalam jaringan
       internet. Open proxy biasanya digunakan user untuk menyembunyikan IP address pengguna
       ketika sedang melakukan browsing internet (hacker style/safe browsing).
•   Reverse Proxy
       Reverse proxy atau Surrogate adalah sebuah proxy server yang muncul ke client sebagai sebuah
       server yang tidak biasa, request dari client akan diteruskan ke satu atau lebih server yang
       nantinya akan memproses request tersebut, response dari sebuah reverse proxy seakan-akan
       seperti datang dari server sebenarnya yang menangani request tersebut.




       Reverse proxy di pasang di dalam jaringan web server atau didalam web server itu sendiri, semua
       trafik yang datang dari internet yang tertuju kepada satu atau lebih web server dalam jaringan
       internal web server tersebut harus melewati proxy server terlebih dahulu. Kata reverse dalam
       reverse proxy merupakan kebalikan makna dari forward proxy, sebab reverse proxy terletak
       lebih dekat kepada web server dan hanya melayani content-content terbatas yang ada web
       server tersebut.

       Ada beberapa alasan orang meng-install reverse proxy diantaranya: Encryption, Load Balancing,
       Serve/Cache Static Content, Kompresi, Spoon Feeding, Security dan lain-lain.

       Sumber: http://en.wikipedia.org/wiki/Proxy_server

3. Reverse Proxy terbuat dari?

Reverse proxy dapat dibuat dengan memanfaatkan aplikasi server seperti, Apache, atau Nginx. Dengan
menambahkan modul-modul tertentu dan meng-oprek konfigurasi, Apache dapat dimanfaatkan
menjadi sebuah reverse proxy. Sementara untuk Nginx, Nginx sendiri datang dengan kemampuan
default sebagai sebuah reverse proxy dan load balancing server, sehingga tidak perlu menambahkan
modul-modul dalam untuk membuat nginx menjadi sebuah reverse proxy, hanya perlu sedikit
melakukan konfigurasi, maka nginx siap dijadikan sebagai sebuah reverse proxy dan load balancing
server. Lebih jauh mengenai Apache sebagai web proxy bisa dibaca di :
http://blog.josescalia.net/2012/02/menjadikan-apache-sebagai-proxy-web.html
4. Diagram Arsitektur Reverse proxy dan Load Balancing Server



                                    HTTP Request




                                        Reverse
                                      Proxy/Load
                                       Balancing

                                              Configured Proxy or Load Balancing




                            Application          Application
                             Server 01            Server 02


Secara flow diagram alur HTTP request yang di-intercept oleh proxy seperti gambar di atas, setiap
request yang datang dari client akan di terima oleh reverse proxy server, dan kemudian proxy server akan
meneruskan ke application server agar request tersebut di proses oleh application server, dan nantinya
hasil dari proses tersebut akan dikembalikan ke client melewati route yang sama.

Dalam penerapannya, application server ini bisa lebih banyak dari gambar diatas, tergantung dari
pertimbangan banyaknya request yang masuk ke application tersebut, semakin banyak node application
server yang ada, secara relatif request juga seharusnya bisa diproses bisa lebih cepat karena tidak harus
mengantri atau menunggu request sebelumnya selesai diproses. Tapi pertimbangan hardware juga
menjadi faktor banyaknya node application server yang hendak dibuat, sebab setiap node application
server terhitung sebagai sebuah instance aplikasi yang tentunya menggunakan memory yang ada pada
CPU.

5. How To Use Nginx as Reverse Proxy and Load Balancing Server

Seperti yang sudah dipaparkan di atas, bahwa Nginx datang dengan kemampuan default sebagai reverse
proxy dan cukup sedikit memodifikasi file konfigurasi nginx, maka nginx siap dijadikan sebagai reverse
proxy.

Mari kita mencoba membuat sebuah skenario arsitektur sebuah reverse proxy, dimana dalam skenario
tersebut kita inginkan agar setiap kali penambahan node application server, kita tidak mengubah
setting-an pada file utama konfigurasi nginx, tetapi kita menambahkan file konfigurasi baru saja.
Berikut ini langkah-langkahnya, dengan asumsi nginx sudah ter-install dalam operating system:

   1. Buka file nginx.conf yang terletak pada folder instalasi nginx, dalam OS fedora 14 file ini terletak
      pada direktori /etc/nginx/. Perhatikan baris-baris pada file tersebut yang isinya seperti dibawah
      ini:
         user nginx;
         worker_processes   1;

         error_log   /var/log/nginx/error.log warn;
         pid         /var/run/nginx.pid;

         events {
             worker_connections     1024;
         }


         http {
             include        /etc/nginx/mime.types;
             default_type   application/octet-stream;

             log_format    main   '$remote_addr - $remote_user [$time_local] "$request" '
                                  '$status $body_bytes_sent "$http_referer" '
                                  '"$http_user_agent" "$http_x_forwarded_for"';

             access_log    /var/log/nginx/access.log   main;

             sendfile         on;
             #tcp_nopush      on;

             keepalive_timeout     65;

             #gzip   on;

             include /etc/nginx/conf.d/*.conf;
         }


      Pada baris kode yang ditebalkan dapat diartikan seperti ini, nginx akan membaca seluruh file
      dengan ekstensi .conf yang ada pada folder /etc/nginx/conf.d/, nah disinilah nantinya kita akan
      memodifikasi setting-an nginx.
   2. Rename file default.conf menjadi default.conf.bak yang ada pada folder /etc/nginx/conf/.
      Dengan cara ini maka konfigurasi default nginx tidak akan lagi terbaca pada saat service nginx di
      start.
   3. Pada folder yang sama letaknya dengan default.conf tersebut, buatah sebuah file dengan nama
      real_nginx.conf, penamaan ini tidak harus sama, hanya saja ekstensi file tersebut dan folder
      tempat meletakkan file tersebut mengikuti setting-an yang ada pada nginx.conf pada langkah 1.
      Adapun contoh isi dari file real_nginx.conf tersebut adalah sebagai berikut:

         #OVERRIDE NGINX CONFIGURATION
         #---------------------------------------------------------
         server {
            listen 80;
            server_name localhost;
            access_log /var/log/nginx/nginx_balancer.log;

             #include all web application configuration
             include /etc/nginx/conf.d/cluster/*.conf;
         }
         #---------------------------------------------------------
Pada file ini yang dapat kita pahami adalah sebagai berikut, nginx akan listen pada port 80,
   dengan nama server-nya adalah localhost, dan dimana semua akses yang masuk ke dalam port
   80 dalam service nginx tersebut akan dicatat dalam file /var/log/nginx/nginx_balancer.log.
   Kemudian nginx akan membaca lagi semua konfigurasi yang terletak pada folder
   /etc/nginx/conf.d/cluster/. Nah disinilah point utama dari skenario yang kita buat diatas, yaitu
   setiap kita ingin menambahkan node application server kita hanya menambah file konfigurasi
   pada folder ini saja, tanpa harus mengubah setting-an file utama konfigurasi yaitu file
   real_nginx.conf.
4. Langkah berikutnya sebetulnya adalah langkah yang bisa dilakukan berulang-ulang sesuai
   dengan keinginan kita menambahkan node application server. Buat sebuah file konfigurasi yang
   merepresentasikan sebuah reverse proxy seperti contoh berikut ini:
      ###################### DOCUMENTATION #############################
      # Each folder on web application must register here as a proxy_pass
      # and the proxy pass must pointing to name of upstream which is
      # configured on the /etc/nginx/conf.d/nginx_balancer.conf
      #-----------------------------------------------------------------
      location /jasperserver {
         proxy_pass http://127.0.0.1:3030/jasperserver;
      }
      ############################END SCRIPT#############################


   Contoh konfigurasi diatas adalah sebuah konfigurasi yang membuat supaya aplikasi jasperserver
   yang tadinya berjalan pada port 3030 bisa diakses pada port 80 dengan URL
   http://somehost/jasperserver. Inilah yang disebut dengan reverse proxy, dimana sebetulnya
   client hanya tahu me-request http://somehost/jasperserver, padahal di dalamnya reverse proxy
   akan meneruskan request tersebut ke http://127.0.0.1:3030/jasperserver.
5. Jika langkah diatas adalah membuat sebuah konfigurasi reverse proxy maka source code
   dibawah ini adalah konfigurasi Load Balancing.
     ###################### DOCUMENTATION #############################
     # Each folder on web application must register here as a proxy_pass
     # and the proxy pass must pointing to name of upstream which is
     # configured on the /etc/nginx/conf.d/nginx_balancer.conf
     #-----------------------------------------------------------------
     location /tomcat_admin {
        proxy_pass http://tc_balancer;
     }

     location /manager{
        proxy_pass http://tc_balancer;
     }

     location /docs{
        proxy_pass http://tc_balancer;
     }

     location /examples{
        proxy_pass http://tc_balancer;
     }

     location /host-manager{
        proxy_pass http://tc_balancer;
     }

     ############################END SCRIPT#############################
Pada source diatas terlihat ada URL yang tidak biasa, yaitu http://tc_balancer, URL ini adalah
        URL Load Balancing yang harus kita setting pada file konfigurasi utama nginx, agar URL ini bisa
        terbaca oleh nginx maka konfigurasi utama harus kita tambahkan seperti contoh dibawah ini:
         #########################################################
         #BALANCER FOR TOMCAT RUNNING ON PORT 18080 and 28080 etc
         upstream tc_balancer {
             ip_hash;
             server 127.0.0.1:18080;
             server 127.0.0.1:28080;
             server 127.0.0.1:38080;
             server 127.0.0.1:48080;
             server 127.0.0.1:58080;
         }
         #---------------------------------------------------------

         #OVERRIDE NGINX CONFIGURATION
         #---------------------------------------------------------
         server {
            listen 80;
            server_name localhost;
            access_log /var/log/nginx/nginx_balancer.log;

             #include all web application configuration
             include /etc/nginx/conf.d/cluster/*.conf;
         }
         #---------------------------------------------------------




        Dengan tambahan yang digaris tebal diatas, maka url tc_balancer akan bisa dibaca oleh nginx
        sebagai sebuah URL yang valid, dalam code tersebut terlihat bahwa upstream tc_balancer akan
        mengarah ke server-server yang terdaftar dalam blok kurawal.

Demikianlah pemanfaatan Nginx sebagai sebuah Reverse Proxy dan Load Balancing Web Application.
Contoh diatas adalah sebuah contoh sederhana pemanfaatan Nginx yang bisa dikembangkan lebih
kompleks lagi.




Semoga Bermanfaat

Salam


Josescalia
Created For HITZ (Hack In The Zoo) 2013-#1 Kebun Raya Bogor (16 Februari 2013)

More Related Content

What's hot

Soal Ujian Semester Kelas XII Tahun 2019/2020
Soal Ujian Semester Kelas XII Tahun 2019/2020Soal Ujian Semester Kelas XII Tahun 2019/2020
Soal Ujian Semester Kelas XII Tahun 2019/2020Walid Umar
 
Instalasi Debian Server
Instalasi Debian ServerInstalasi Debian Server
Instalasi Debian Serverharisx
 
Materi Proxy Server Lengkap
Materi Proxy Server LengkapMateri Proxy Server Lengkap
Materi Proxy Server LengkapAli Must Can
 
Konfigurasi debian 5
Konfigurasi debian 5Konfigurasi debian 5
Konfigurasi debian 5gasgam
 
Pertemuan 8 mail server
Pertemuan 8 mail serverPertemuan 8 mail server
Pertemuan 8 mail serverjumiathyasiz
 
Network commands
Network commandsNetwork commands
Network commandsIzal Kernel
 
Membangun Web Server Menggunakan Linux Ubuntu
Membangun Web Server Menggunakan Linux UbuntuMembangun Web Server Menggunakan Linux Ubuntu
Membangun Web Server Menggunakan Linux UbuntuRizky Fadillah
 
Debian 4
Debian 4Debian 4
Debian 4okaa123
 
Materi aplikasi server - 11 TKJ-K 2013
Materi aplikasi server - 11 TKJ-K 2013Materi aplikasi server - 11 TKJ-K 2013
Materi aplikasi server - 11 TKJ-K 2013Veronica Devi
 
Instalasi dan konfigurasi debian wheezy 7
Instalasi dan konfigurasi debian wheezy 7Instalasi dan konfigurasi debian wheezy 7
Instalasi dan konfigurasi debian wheezy 7Hisam Rizky
 
Konfigurasi DHCP
Konfigurasi DHCPKonfigurasi DHCP
Konfigurasi DHCPzelvi
 
Web Server, DNS Server, dan FTP Server
Web Server, DNS Server, dan FTP ServerWeb Server, DNS Server, dan FTP Server
Web Server, DNS Server, dan FTP ServerIsna Dwi Setianingsih
 
Tugas individu 2 nasrul akbar 1412510552
Tugas individu 2 nasrul akbar 1412510552Tugas individu 2 nasrul akbar 1412510552
Tugas individu 2 nasrul akbar 1412510552Nasrul Akbar
 
Konfigurasi server open suse
Konfigurasi server open suseKonfigurasi server open suse
Konfigurasi server open suseArief Ubaidillah
 

What's hot (20)

Soal Ujian Semester Kelas XII Tahun 2019/2020
Soal Ujian Semester Kelas XII Tahun 2019/2020Soal Ujian Semester Kelas XII Tahun 2019/2020
Soal Ujian Semester Kelas XII Tahun 2019/2020
 
Instalasi Debian Server
Instalasi Debian ServerInstalasi Debian Server
Instalasi Debian Server
 
Materi Proxy Server Lengkap
Materi Proxy Server LengkapMateri Proxy Server Lengkap
Materi Proxy Server Lengkap
 
Konfigurasi debian 5
Konfigurasi debian 5Konfigurasi debian 5
Konfigurasi debian 5
 
Pertemuan 8 mail server
Pertemuan 8 mail serverPertemuan 8 mail server
Pertemuan 8 mail server
 
Network commands
Network commandsNetwork commands
Network commands
 
Membangun Web Server Menggunakan Linux Ubuntu
Membangun Web Server Menggunakan Linux UbuntuMembangun Web Server Menggunakan Linux Ubuntu
Membangun Web Server Menggunakan Linux Ubuntu
 
Konfigurasi server debian
Konfigurasi server debianKonfigurasi server debian
Konfigurasi server debian
 
Penjelasan Materi Web Server
Penjelasan Materi Web Server Penjelasan Materi Web Server
Penjelasan Materi Web Server
 
Debian 4
Debian 4Debian 4
Debian 4
 
Lapres https
Lapres httpsLapres https
Lapres https
 
application layer
application layerapplication layer
application layer
 
Materi aplikasi server - 11 TKJ-K 2013
Materi aplikasi server - 11 TKJ-K 2013Materi aplikasi server - 11 TKJ-K 2013
Materi aplikasi server - 11 TKJ-K 2013
 
Bab 7 gnu linu x server
Bab 7 gnu linu x serverBab 7 gnu linu x server
Bab 7 gnu linu x server
 
Instalasi dan konfigurasi debian wheezy 7
Instalasi dan konfigurasi debian wheezy 7Instalasi dan konfigurasi debian wheezy 7
Instalasi dan konfigurasi debian wheezy 7
 
Konfigurasi DHCP
Konfigurasi DHCPKonfigurasi DHCP
Konfigurasi DHCP
 
Web Server, DNS Server, dan FTP Server
Web Server, DNS Server, dan FTP ServerWeb Server, DNS Server, dan FTP Server
Web Server, DNS Server, dan FTP Server
 
Tugas individu 2 nasrul akbar 1412510552
Tugas individu 2 nasrul akbar 1412510552Tugas individu 2 nasrul akbar 1412510552
Tugas individu 2 nasrul akbar 1412510552
 
Artikelserver
ArtikelserverArtikelserver
Artikelserver
 
Konfigurasi server open suse
Konfigurasi server open suseKonfigurasi server open suse
Konfigurasi server open suse
 

Similar to Configuring Nginx as Reverse Proxy and Load Balancing Web Application

14001326 all-about-squid-apache - [the-xp.blogspot.com]
14001326 all-about-squid-apache - [the-xp.blogspot.com]14001326 all-about-squid-apache - [the-xp.blogspot.com]
14001326 all-about-squid-apache - [the-xp.blogspot.com]Krisman Tarigan
 
Tugas 2 0317-nurul azmi-1412510587
Tugas 2 0317-nurul azmi-1412510587Tugas 2 0317-nurul azmi-1412510587
Tugas 2 0317-nurul azmi-1412510587nurul azmi
 
Tugas 2 0317-fahreza yozi-1612510832
Tugas 2 0317-fahreza yozi-1612510832Tugas 2 0317-fahreza yozi-1612510832
Tugas 2 0317-fahreza yozi-1612510832fahreza yozi
 
Implementasi otentikasi pada squid dalam mode transparent proxy
Implementasi otentikasi pada squid dalam mode transparent proxyImplementasi otentikasi pada squid dalam mode transparent proxy
Implementasi otentikasi pada squid dalam mode transparent proxyPanggih Supraja
 
Tugas 2 0317-dewi apriliani-1412510602
Tugas 2 0317-dewi apriliani-1412510602Tugas 2 0317-dewi apriliani-1412510602
Tugas 2 0317-dewi apriliani-1412510602dewiapril1996
 
Tugas 2 0317-imelda felicia-1412510545
Tugas 2 0317-imelda felicia-1412510545Tugas 2 0317-imelda felicia-1412510545
Tugas 2 0317-imelda felicia-1412510545imeldafelicia
 
Slide-IST104-IST104-Slide-10-11.pptx
Slide-IST104-IST104-Slide-10-11.pptxSlide-IST104-IST104-Slide-10-11.pptx
Slide-IST104-IST104-Slide-10-11.pptxuntuk1
 
Pemogran Web
Pemogran WebPemogran Web
Pemogran Webandreboys
 
Pemrograman-Berbasis-Web-Pertemuan-1.ppt
Pemrograman-Berbasis-Web-Pertemuan-1.pptPemrograman-Berbasis-Web-Pertemuan-1.ppt
Pemrograman-Berbasis-Web-Pertemuan-1.pptAbdurRozak19
 
Rekayasa web part 2 khaerul anwar
Rekayasa web part 2 khaerul anwarRekayasa web part 2 khaerul anwar
Rekayasa web part 2 khaerul anwarKhaerul Anwar
 
WEB SERVER hsjskabqmmwhahyuaiajggnew.pptx
WEB SERVER hsjskabqmmwhahyuaiajggnew.pptxWEB SERVER hsjskabqmmwhahyuaiajggnew.pptx
WEB SERVER hsjskabqmmwhahyuaiajggnew.pptxstoreachnew
 
cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5
cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5
cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5stephan EL'wiin Shaarawy
 

Similar to Configuring Nginx as Reverse Proxy and Load Balancing Web Application (20)

Proxy server
Proxy serverProxy server
Proxy server
 
14001326 all-about-squid-apache - [the-xp.blogspot.com]
14001326 all-about-squid-apache - [the-xp.blogspot.com]14001326 all-about-squid-apache - [the-xp.blogspot.com]
14001326 all-about-squid-apache - [the-xp.blogspot.com]
 
Dasar web-dan-html
Dasar web-dan-htmlDasar web-dan-html
Dasar web-dan-html
 
Squid indonesia
Squid indonesiaSquid indonesia
Squid indonesia
 
Tugas 2 0317-nurul azmi-1412510587
Tugas 2 0317-nurul azmi-1412510587Tugas 2 0317-nurul azmi-1412510587
Tugas 2 0317-nurul azmi-1412510587
 
Tugas 2 0317-fahreza yozi-1612510832
Tugas 2 0317-fahreza yozi-1612510832Tugas 2 0317-fahreza yozi-1612510832
Tugas 2 0317-fahreza yozi-1612510832
 
Web server
Web serverWeb server
Web server
 
Dasar web dan html
Dasar web dan htmlDasar web dan html
Dasar web dan html
 
Implementasi otentikasi pada squid dalam mode transparent proxy
Implementasi otentikasi pada squid dalam mode transparent proxyImplementasi otentikasi pada squid dalam mode transparent proxy
Implementasi otentikasi pada squid dalam mode transparent proxy
 
Tugas 2 0317-dewi apriliani-1412510602
Tugas 2 0317-dewi apriliani-1412510602Tugas 2 0317-dewi apriliani-1412510602
Tugas 2 0317-dewi apriliani-1412510602
 
Tugas 2 0317-imelda felicia-1412510545
Tugas 2 0317-imelda felicia-1412510545Tugas 2 0317-imelda felicia-1412510545
Tugas 2 0317-imelda felicia-1412510545
 
Slide-IST104-IST104-Slide-10-11.pptx
Slide-IST104-IST104-Slide-10-11.pptxSlide-IST104-IST104-Slide-10-11.pptx
Slide-IST104-IST104-Slide-10-11.pptx
 
Dasar web dan html
Dasar web dan htmlDasar web dan html
Dasar web dan html
 
Presentasi (2).pptx
Presentasi (2).pptxPresentasi (2).pptx
Presentasi (2).pptx
 
Pemogran Web
Pemogran WebPemogran Web
Pemogran Web
 
Pemrograman-Berbasis-Web-Pertemuan-1.ppt
Pemrograman-Berbasis-Web-Pertemuan-1.pptPemrograman-Berbasis-Web-Pertemuan-1.ppt
Pemrograman-Berbasis-Web-Pertemuan-1.ppt
 
Rekayasa web part 2 khaerul anwar
Rekayasa web part 2 khaerul anwarRekayasa web part 2 khaerul anwar
Rekayasa web part 2 khaerul anwar
 
WEB SERVER hsjskabqmmwhahyuaiajggnew.pptx
WEB SERVER hsjskabqmmwhahyuaiajggnew.pptxWEB SERVER hsjskabqmmwhahyuaiajggnew.pptx
WEB SERVER hsjskabqmmwhahyuaiajggnew.pptx
 
cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5
cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5
cara install nginx dengan php5 dan dukungan Mysql Di CentOS 6.5
 
websecure.ppt
websecure.pptwebsecure.ppt
websecure.ppt
 

Configuring Nginx as Reverse Proxy and Load Balancing Web Application

  • 1. Configuring Nginx as Reverse Proxy and Load Balancing Web Application 1. Apa sih Proxy Server Pada jaringan komputer, proxy server adalah sebuah server (sebuah sistem komputer atau sebuah aplikasi) yang bertugas sebagai penengah dari request yang datang dari client mencari data ke server lain. Ketika sebuah client terhubung ke sebuah proxy server, meminta layanan-layanan, seperti file, koneksi, halaman web atau data lain yang boleh diakses dan berasal dari sebuah server lain, proxy server akan mengevaluasi permintaan tersebut sebagai dengan cara mempermudah pengaksesan dan mengontrol kompleksitas permintaan tersebut. Saat ini kebanyakan proxy adalah web proxy, sebagai sebuah alat yang memfasilitasi pengaksesan content-content dari World Wide Web. 2. Jenis-Jenis Proxy Ada 3 macam jenis proxy yang dibedakan berdasarkan tata letaknya. • Forward Proxy Forward Proxy adalah proxy yang bertugas meneruskan permintaan konektivitas client ke server- server yang di kehendaki oleh client, forward proxy memiliki kemampuan untuk mengakses content-content kemana saja (dalam hal ini semua server pada internet) [4] • Open Proxy Open proxy adalah sebuah forwarding proxy yang bisa diakses oleh siapapun di dalam jaringan internet. Open proxy biasanya digunakan user untuk menyembunyikan IP address pengguna ketika sedang melakukan browsing internet (hacker style/safe browsing).
  • 2. Reverse Proxy Reverse proxy atau Surrogate adalah sebuah proxy server yang muncul ke client sebagai sebuah server yang tidak biasa, request dari client akan diteruskan ke satu atau lebih server yang nantinya akan memproses request tersebut, response dari sebuah reverse proxy seakan-akan seperti datang dari server sebenarnya yang menangani request tersebut. Reverse proxy di pasang di dalam jaringan web server atau didalam web server itu sendiri, semua trafik yang datang dari internet yang tertuju kepada satu atau lebih web server dalam jaringan internal web server tersebut harus melewati proxy server terlebih dahulu. Kata reverse dalam reverse proxy merupakan kebalikan makna dari forward proxy, sebab reverse proxy terletak lebih dekat kepada web server dan hanya melayani content-content terbatas yang ada web server tersebut. Ada beberapa alasan orang meng-install reverse proxy diantaranya: Encryption, Load Balancing, Serve/Cache Static Content, Kompresi, Spoon Feeding, Security dan lain-lain. Sumber: http://en.wikipedia.org/wiki/Proxy_server 3. Reverse Proxy terbuat dari? Reverse proxy dapat dibuat dengan memanfaatkan aplikasi server seperti, Apache, atau Nginx. Dengan menambahkan modul-modul tertentu dan meng-oprek konfigurasi, Apache dapat dimanfaatkan menjadi sebuah reverse proxy. Sementara untuk Nginx, Nginx sendiri datang dengan kemampuan default sebagai sebuah reverse proxy dan load balancing server, sehingga tidak perlu menambahkan modul-modul dalam untuk membuat nginx menjadi sebuah reverse proxy, hanya perlu sedikit melakukan konfigurasi, maka nginx siap dijadikan sebagai sebuah reverse proxy dan load balancing server. Lebih jauh mengenai Apache sebagai web proxy bisa dibaca di : http://blog.josescalia.net/2012/02/menjadikan-apache-sebagai-proxy-web.html
  • 3. 4. Diagram Arsitektur Reverse proxy dan Load Balancing Server HTTP Request Reverse Proxy/Load Balancing Configured Proxy or Load Balancing Application Application Server 01 Server 02 Secara flow diagram alur HTTP request yang di-intercept oleh proxy seperti gambar di atas, setiap request yang datang dari client akan di terima oleh reverse proxy server, dan kemudian proxy server akan meneruskan ke application server agar request tersebut di proses oleh application server, dan nantinya hasil dari proses tersebut akan dikembalikan ke client melewati route yang sama. Dalam penerapannya, application server ini bisa lebih banyak dari gambar diatas, tergantung dari pertimbangan banyaknya request yang masuk ke application tersebut, semakin banyak node application server yang ada, secara relatif request juga seharusnya bisa diproses bisa lebih cepat karena tidak harus mengantri atau menunggu request sebelumnya selesai diproses. Tapi pertimbangan hardware juga menjadi faktor banyaknya node application server yang hendak dibuat, sebab setiap node application server terhitung sebagai sebuah instance aplikasi yang tentunya menggunakan memory yang ada pada CPU. 5. How To Use Nginx as Reverse Proxy and Load Balancing Server Seperti yang sudah dipaparkan di atas, bahwa Nginx datang dengan kemampuan default sebagai reverse proxy dan cukup sedikit memodifikasi file konfigurasi nginx, maka nginx siap dijadikan sebagai reverse proxy. Mari kita mencoba membuat sebuah skenario arsitektur sebuah reverse proxy, dimana dalam skenario tersebut kita inginkan agar setiap kali penambahan node application server, kita tidak mengubah setting-an pada file utama konfigurasi nginx, tetapi kita menambahkan file konfigurasi baru saja.
  • 4. Berikut ini langkah-langkahnya, dengan asumsi nginx sudah ter-install dalam operating system: 1. Buka file nginx.conf yang terletak pada folder instalasi nginx, dalam OS fedora 14 file ini terletak pada direktori /etc/nginx/. Perhatikan baris-baris pada file tersebut yang isinya seperti dibawah ini: user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; } Pada baris kode yang ditebalkan dapat diartikan seperti ini, nginx akan membaca seluruh file dengan ekstensi .conf yang ada pada folder /etc/nginx/conf.d/, nah disinilah nantinya kita akan memodifikasi setting-an nginx. 2. Rename file default.conf menjadi default.conf.bak yang ada pada folder /etc/nginx/conf/. Dengan cara ini maka konfigurasi default nginx tidak akan lagi terbaca pada saat service nginx di start. 3. Pada folder yang sama letaknya dengan default.conf tersebut, buatah sebuah file dengan nama real_nginx.conf, penamaan ini tidak harus sama, hanya saja ekstensi file tersebut dan folder tempat meletakkan file tersebut mengikuti setting-an yang ada pada nginx.conf pada langkah 1. Adapun contoh isi dari file real_nginx.conf tersebut adalah sebagai berikut: #OVERRIDE NGINX CONFIGURATION #--------------------------------------------------------- server { listen 80; server_name localhost; access_log /var/log/nginx/nginx_balancer.log; #include all web application configuration include /etc/nginx/conf.d/cluster/*.conf; } #---------------------------------------------------------
  • 5. Pada file ini yang dapat kita pahami adalah sebagai berikut, nginx akan listen pada port 80, dengan nama server-nya adalah localhost, dan dimana semua akses yang masuk ke dalam port 80 dalam service nginx tersebut akan dicatat dalam file /var/log/nginx/nginx_balancer.log. Kemudian nginx akan membaca lagi semua konfigurasi yang terletak pada folder /etc/nginx/conf.d/cluster/. Nah disinilah point utama dari skenario yang kita buat diatas, yaitu setiap kita ingin menambahkan node application server kita hanya menambah file konfigurasi pada folder ini saja, tanpa harus mengubah setting-an file utama konfigurasi yaitu file real_nginx.conf. 4. Langkah berikutnya sebetulnya adalah langkah yang bisa dilakukan berulang-ulang sesuai dengan keinginan kita menambahkan node application server. Buat sebuah file konfigurasi yang merepresentasikan sebuah reverse proxy seperti contoh berikut ini: ###################### DOCUMENTATION ############################# # Each folder on web application must register here as a proxy_pass # and the proxy pass must pointing to name of upstream which is # configured on the /etc/nginx/conf.d/nginx_balancer.conf #----------------------------------------------------------------- location /jasperserver { proxy_pass http://127.0.0.1:3030/jasperserver; } ############################END SCRIPT############################# Contoh konfigurasi diatas adalah sebuah konfigurasi yang membuat supaya aplikasi jasperserver yang tadinya berjalan pada port 3030 bisa diakses pada port 80 dengan URL http://somehost/jasperserver. Inilah yang disebut dengan reverse proxy, dimana sebetulnya client hanya tahu me-request http://somehost/jasperserver, padahal di dalamnya reverse proxy akan meneruskan request tersebut ke http://127.0.0.1:3030/jasperserver. 5. Jika langkah diatas adalah membuat sebuah konfigurasi reverse proxy maka source code dibawah ini adalah konfigurasi Load Balancing. ###################### DOCUMENTATION ############################# # Each folder on web application must register here as a proxy_pass # and the proxy pass must pointing to name of upstream which is # configured on the /etc/nginx/conf.d/nginx_balancer.conf #----------------------------------------------------------------- location /tomcat_admin { proxy_pass http://tc_balancer; } location /manager{ proxy_pass http://tc_balancer; } location /docs{ proxy_pass http://tc_balancer; } location /examples{ proxy_pass http://tc_balancer; } location /host-manager{ proxy_pass http://tc_balancer; } ############################END SCRIPT#############################
  • 6. Pada source diatas terlihat ada URL yang tidak biasa, yaitu http://tc_balancer, URL ini adalah URL Load Balancing yang harus kita setting pada file konfigurasi utama nginx, agar URL ini bisa terbaca oleh nginx maka konfigurasi utama harus kita tambahkan seperti contoh dibawah ini: ######################################################### #BALANCER FOR TOMCAT RUNNING ON PORT 18080 and 28080 etc upstream tc_balancer { ip_hash; server 127.0.0.1:18080; server 127.0.0.1:28080; server 127.0.0.1:38080; server 127.0.0.1:48080; server 127.0.0.1:58080; } #--------------------------------------------------------- #OVERRIDE NGINX CONFIGURATION #--------------------------------------------------------- server { listen 80; server_name localhost; access_log /var/log/nginx/nginx_balancer.log; #include all web application configuration include /etc/nginx/conf.d/cluster/*.conf; } #--------------------------------------------------------- Dengan tambahan yang digaris tebal diatas, maka url tc_balancer akan bisa dibaca oleh nginx sebagai sebuah URL yang valid, dalam code tersebut terlihat bahwa upstream tc_balancer akan mengarah ke server-server yang terdaftar dalam blok kurawal. Demikianlah pemanfaatan Nginx sebagai sebuah Reverse Proxy dan Load Balancing Web Application. Contoh diatas adalah sebuah contoh sederhana pemanfaatan Nginx yang bisa dikembangkan lebih kompleks lagi. Semoga Bermanfaat Salam Josescalia Created For HITZ (Hack In The Zoo) 2013-#1 Kebun Raya Bogor (16 Februari 2013)