Assalammu'alaikum wa rahmatullah wa barakatuh,

      Kali ini kita akan membahas bagaimana caranya menggabungkan web server apache dengan nginx. Perlu diketahui, bahwa Nginx dan Apache mempunyai keunggulan dan kekurangannya masing-masing yang menyebabkan kita perlu menyesuaikan apa yang kita butuhkan untuk web server kita inginnya seperti apa. Untuk penjelasan lebih lengkapnya bisa dibaca disini .

      Sedikit penjelasan tentang nginx dan apache. Nginx adalah sebuah web server yang bersifat based on event-driven sedangkan Apache bersifat based on process. Dengan kata lain, Nginx tidak akan membuat proses dan pekerjaan baru meskipun ada permintaan baru sedangkan Apache hanya akan membuat proses dan pekerjaan pada saat ada permintaan saja. Akan terlihat perbedaannya ketika banyak permintaan yang datang, Nginx akan lebih mudah untuk mengatasinya karena setiap prosesnya dikerjakan oleh workers yang dimana setiap workers dapat menyanggupi hingga 1024 permintaan sedangkan Apache akan semakin banyak membutuhkan alokasi memori dan proses pada CPU sehingga membutuhkan spesifikasi hardware yang lebih tinggi dibandingkan Nginx. Walau begitu, best practice nya adalah menggabungkan keduanya untuk saling melengkapi kekurangan satu sama lain, dimana Nginx juga mempunyai kekurangan yaitu salah satunya tidak memiliki opsi konfigurasi sebanyak yang Apache punya. Langsung saja kita terjun ke lab nya !


*Disini saya asumsikan bahwa teman-teman sudah menginstal apa-apa saja yang diperlukan untuk membuat sebuah web server pada Nginx dan Apache. Disini kita akan fokus pada sisi konfigurasinya.

Tujuan : 
  • Dapat mengonfigurasi Nginx sebagai Reverse Proxy
  • Dapat mengonfigurasi Apache sebagai web server
  • Client dapat mengakses web server pada Apache melalui Nginx





     Disini perlu saya jelaskan dulu mengenai topologi di atas. Untuk lab ini saya hanya menggunakan satu VM saja, sedangkan topologi di atas menggunakan 2 VM. Walaupun hanya menggunakan satu VM, kita tetap bisa melakukan lab ini dengan cara membedakan portnya saja. Disini saya menggunakan port 8090 untuk Apache dan port 80 (default) untuk Nginx. Maka dari itu perlu ubah port Apache terlebih dahulu menjadi 8090 agar tidak bentrok pada saat Nginx dan Apache dijalankan secara bersamaan. Filenya bernama httpd.conf dan ada di direktori /etc/httpd/conf/httpd.conf .


Tahap 1 : Konfigurasi Apache


      Buat sebuah file baru pada direktori /etc/httpd/conf.d/  , disini saya mebuat sebuah file baru bernama oprek.conf dan berikut adalah isinya :



      Keterangan :
  • ServerAdmin : Nama servernya
  • DocumentRoot : Path dari file yang akan ditampilkan pada web
  • RemoteIPHeader X-Forwarded-For : Untuk mengidentifikasi IP Address asal dari client
  • RemoteIPInternalProxy : IP Address server yang dipercayai apache ( karena disini saya hanya menggunakan satu vm, jadi menggunakan IP Address yang sama. Pada praktik yang aslinya bisa juga menggunakan IP Address yang berbeda jika web server Nginx nya menggunakan VM yang berbeda )
  • Require All Granted : Mengizinkan semua IP Address untuk mengakses service


      Buatlah sebuah direktori pada /var/www/ baru sesuai apa yang tadi sudah didefinisikan pada konfigurasi di atas. Lalu buat sebuah file index.html di dalam direktori tersebut. Contohnya adalah seperti di bawah :




      Buka file httpd.conf yang ada pada direktori /etc/httpd/conf/ lalu tambahkan format string %a setelah %h.



      Keterangan :
  • %a : IP Address client yang akan dicatat pada log
  • %h : IP Address server
Tahap 2 : Konfigurasi Nginx
     Buat sebuah file pada direktori /etc/nginx/conf.d/ , disini saya membuat sebuah file baru dengan nama yang sama seperti yang ada pada apache yaitu oprek.conf





      Keterangan :
  •  upstream : membuat sebuah grup untuk menampung list server
  • proxy_server : menentukan lokasi server yang akan dijadikan target. Bisa ditulis dengan IP Address ataupun nama domainnya.
  • proxy_set_header
    • X-Forwarded-Proto $scheme : menunjukkan protokol apa yang dipakai
    • X-Forwarded-Port $server_port : menunjukkan port yang dipakai
    • X-Forwarded-For $porxy_add_x_forwarded_for : menunjukkan IP Address server target
     
      Buat sebuah file lagi pada direktori yang sama seperti pada konfigurasi  di atas dan konfigurasikan seperti gambar di bawah ini :


     File ini berfungsi untuk melakukan pengalihan request dari client ke server asli secara otomatis.


     Tes konfigurasi apakah terdapat typo atau kesalahan lainnya.
 



Tahap 3 : Testing



      Lakukan testing pada client untuk mengakses web server melalui browser lalu cek log akses web yang dimiliki Apache untuk melihat aktifitasnya yang terekam seperti pada gambar di bawah ini :

     

     Lalu untuk memastikan apakah reverse proxy sudah benar-benar berfungsi maka bisa dicoba dengan mematikan service Apache dengan perintah systmctl stop httpd , maka pada saat mengakses web servernya kembali tidak akan tersambung. Kita perlu menuliskan secara manual pada search bar dengan menyertakan port 8090 yang merupakan port Apache yang sudah dikonfigurasi tadi.


     

      Sekian lab kita mengenai cara menjadikan Nginx menjadi reverse proxy. Ini adalah best practice dari penerapan pemberlakuan service web server itu sendiri karena memadukan kelebihan dari Nginx dan Apache secara bersamaan untuk menutupi kekurangannya. Sekiranya ini lab kita pada kesempatan kali ini, mohon maaf bila terdapat kesalahan dari penyampaian kata ataupun dari penjelasan teknis, saya sangat mengharapkan kritik dan saran yang membangun agar blog ini bisa lebih baik lagi untuk ke depannya. Terima kasih.

Wassalammu'alaikum wa rahmatullah wa barakatuh

Post a Comment

Previous Post Next Post