Site icon Learning & Doing

Deploy Multi Aplikasi dengan Docker dan NGINX Reverse Proxy Dalam Satu Server

reverse

“Deploy Multi Aplikasi dengan Docker dan NGINX Reverse Proxy Dalam Satu Server”

Pengantar

Docker adalah platform open-source yang digunakan untuk mengembangkan, mengemas, dan menjalankan aplikasi dalam wadah (container). Docker memungkinkan pengembang untuk mengisolasi aplikasi dan dependensinya dalam wadah yang dapat berjalan di berbagai lingkungan.

Konsep utama di balik Docker adalah “containerization”. Container merupakan unit eksekusi yang mandiri dan ringan yang menggabungkan kode dan semua dependensinya, seperti pustaka, alat, dan konfigurasi, menjadi satu paket yang dapat dijalankan di mana saja. Setiap wadah berjalan di atas Docker Engine, yang menyediakan lingkungan yang terisolasi dan aman untuk menjalankan aplikasi.

Beberapa keuntungan menggunakan Docker adalah:

  1. Portabilitas: Aplikasi yang dikemas dalam wadah Docker dapat dijalankan di berbagai platform dan lingkungan yang mendukung Docker, tanpa perlu khawatir tentang perbedaan konfigurasi dan dependensi.
  2. Isolasi: Setiap wadah Docker berjalan secara terisolasi, memungkinkan aplikasi untuk bekerja secara independen satu sama lain dan menghindari konflik antardependensi.
  3. Skalabilitas: Docker memungkinkan replikasi dan skalabilitas aplikasi dengan mudah. Dengan menggunakan orkestrasi alat seperti Docker Swarm atau Kubernetes, Anda dapat mengelola dan mengatur penyebaran wadah secara otomatis.
  4. Efisiensi sumber daya: Docker menggunakan pendekatan yang lebih ringan dibandingkan virtualisasi tradisional. Wadah berbagi kernel host, sehingga mengurangi overhead dan penggunaan sumber daya yang lebih rendah.
  5. Percepatan pengembangan: Dengan Docker, pengembang dapat membuat lingkungan yang serupa antara pengembangan lokal dan produksi. Ini mempercepat siklus pengembangan dan memastikan aplikasi berjalan dengan konsisten di berbagai lingkungan.

ginx (dibaca “engine-x”) adalah sebuah server web dan server proxy reverse yang populer. Dirancang untuk menangani lalu lintas web dengan efisiensi tinggi dan skalabilitas yang baik, Nginx sering digunakan sebagai server web utama atau sebagai komponen dalam arsitektur aplikasi yang kompleks.

Beberapa fitur dan keunggulan Nginx adalah:

  1. Kinerja Tinggi: Nginx dirancang dengan arsitektur yang ringan dan dioptimalkan untuk menangani banyak permintaan secara simultan dengan penggunaan sumber daya yang rendah. Dalam pengujian benchmark, Nginx telah terbukti mengatasi lalu lintas tinggi dengan kecepatan yang tinggi.
  2. Server Proxy Reverse: Nginx dapat berfungsi sebagai server proxy reverse, yaitu menerima permintaan dari klien dan meneruskannya ke server aplikasi di belakangnya. Ini memungkinkan Nginx untuk mengelola beban lalu lintas dengan mendistribusikan permintaan ke beberapa server aplikasi, memperbaiki kinerja dan ketahanan sistem.
  3. Penanganan Statis dan Dinamis: Nginx secara efisien menangani file statis seperti HTML, CSS, dan gambar. Selain itu, dengan menggunakan modul tambahan seperti modul FastCGI atau modul pemrograman penghubung seperti PHP-FPM, Nginx juga dapat menangani pemrosesan aplikasi web dinamis.
  4. Konfigurasi Fleksibel: Nginx menggunakan file konfigurasi yang mudah dipahami dan fleksibel. Ini memungkinkan administrator untuk mengonfigurasi dan menyesuaikan perilaku Nginx sesuai dengan kebutuhan spesifik, seperti mengatur rute, pemetaan URL, mengaktifkan SSL, dan lainnya.
  5. Skalabilitas: Dalam arsitektur yang kompleks, Nginx dapat digunakan sebagai bagian dari solusi skalabilitas horizontal dengan memperluas jumlah server aplikasi dan mendistribusikan beban lalu lintas dengan cerdas.

NGINX Reverse Proxy adalah salah satu fitur dari server web NGINX yang memungkinkan penggunaan NGINX sebagai perantara (proxy) antara klien dan server aplikasi di belakangnya. Dalam konfigurasi reverse proxy, NGINX menerima permintaan dari klien dan meneruskannya ke server aplikasi yang sesuai, kemudian mengambil respons dari server aplikasi tersebut dan mengirimkannya kembali ke klien.

Berikut adalah beberapa kegunaan dan manfaat dari NGINX Reverse Proxy:

  1. Load Balancing: NGINX Reverse Proxy dapat digunakan untuk membagi beban lalu lintas antara beberapa server aplikasi, sehingga meningkatkan kinerja dan ketahanan sistem. NGINX menggunakan algoritma penyeimbang beban yang dapat dikonfigurasi, seperti round-robin, least connections, dan IP hash, untuk mendistribusikan permintaan secara adil di antara server aplikasi yang tersedia.
  2. Caching: NGINX memiliki kemampuan untuk melakukan caching konten statis, seperti file gambar, CSS, dan JavaScript. Dengan menggunakan reverse proxy caching, NGINX dapat menyimpan salinan respons dari server aplikasi dan mengirimkannya kembali kepada klien yang meminta konten yang sama. Ini mengurangi beban pada server aplikasi dan mempercepat waktu respon.
  3. SSL Termination: NGINX Reverse Proxy juga dapat bertindak sebagai terminasi SSL, yang berarti NGINX menangani enkripsi dan dekripsi SSL/TLS untuk klien dan server aplikasi di belakangnya. Hal ini memungkinkan implementasi SSL/TLS pada tingkat proxy, sehingga mengurangi beban enkripsi pada server aplikasi dan memfasilitasi manajemen sertifikat SSL/TLS.
  4. Pengalihan Lalu Lintas: NGINX Reverse Proxy dapat digunakan untuk mengalihkan permintaan klien berdasarkan aturan tertentu. Misalnya, Anda dapat mengalihkan permintaan berdasarkan header, URL, atau metode HTTP tertentu. Ini memberikan fleksibilitas dalam mengarahkan lalu lintas ke server aplikasi yang sesuai berdasarkan kebutuhan dan konfigurasi.
  5. Keamanan: NGINX Reverse Proxy dapat bertindak sebagai lapisan pertahanan pertama untuk melindungi server aplikasi di belakangnya. Dengan konfigurasi yang tepat, NGINX dapat membatasi akses langsung ke server aplikasi, menerapkan firewall aplikasi web (WAF), atau melakukan manajemen autentikasi dan otorisasi.

Dengan fitur-fitur tersebut, NGINX Reverse Proxy memberikan fleksibilitas, performa, dan keamanan yang tinggi dalam mengelola lalu lintas web dan mendistribusikannya ke server aplikasi.

Persiapan

Buat Directory Untuk Aplikasi

mkdir -p wp
mkdir -p app

Buat Docker Compose untuk WP

cd wp
nano docker-compose.yml

version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpress:/var/www/html

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql

volumes:
  wordpress:
  db:

Buat Docker Compose untuk App

cd app
nano docker-compose.yml

version: "2.1"
services:
  code-server:
    image: ghcr.io/linuxserver/code-server
    container_name: code-server
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Jakarta
    volumes:
      - /path/to/appdata/config:/config
    ports:
      - 8443:8443
    restart: unless-stopped

Running Docker Compose

cd wp
docker-compose up -d

cd app
docker-compose up -d

Cek Docker Up

Docker ps 

Setting Nginx Revers Proxy

cd /etc/nginx/conf.d
nano server.conf

server {
    #port akses utama
    listen 80;
    #listen [::]:80;
    #servername gunakan domain atau sub domain
    server_name namadomain1.com;
    location / {
        #ubah port ke port dari aplikasi yang berjalan dalam kontainer untuk wordpress di port 8080
    proxy_pass http://127.0.0.1:8080;
    }
}

server {
    #port akses utama
    listen 80;
    #listen [::]:80;
    #servername gunakan domain atau sub domain
    server_name namadomain2.com;
    location / {
        #ubah port ke port dari aplikasi yang berjalan dalam kontainer untuk time di port 8443
    proxy_pass http://127.0.0.1:8443;
    }
}

Restart Service Nginx

systemctl restart nginx

Akses domain

http://namadomain1.com

http://namadomain2.com

Penutup

Sahabat Blog Learning & Doing demikianlah penjelasan mengenai Deploy Multi Aplikasi dengan Docker dan NGINX Reverse Proxy Dalam Satu Server. Semoga Bermanfaat . Sampai ketemu lagi di postingan berikut nya.

Exit mobile version