Press ESC to close

Deploy Nginx Reverse Proxy di Docker

WhatsAppTelegramFacebookXThreadsCopy Link

Apakah Anda pernah mengelola beberapa aplikasi web di satu server dan bingung bagaimana cara mengaturnya agar bisa diakses dengan domain yang berbeda? Atau mungkin Anda ingin memisahkan backend dan frontend agar lebih rapi dan aman?

Jika iya, jawabannya ada pada Nginx Reverse Proxy di Docker.
Namun, bagi pemula, konsep ini sering terasa rumit — mulai dari memahami cara kerja reverse proxy, menulis file konfigurasi Nginx, hingga menghubungkannya dengan container lain di Docker. Salah sedikit, seluruh jaringan bisa tidak berfungsi.

Tenang, artikel ini hadir untuk menjelaskan semuanya secara langkah demi langkah. Anda akan belajar cara:

  • Memahami fungsi Nginx sebagai reverse proxy.
  • Membuat konfigurasi Docker Compose sederhana.
  • Men-deploy Nginx Reverse Proxy di Docker secara praktis.
  • Menghubungkan beberapa aplikasi di balik satu proxy server.

Apa Itu Nginx Reverse Proxy?

Sebelum mulai praktik, mari pahami dulu konsep dasarnya.
Reverse proxy adalah server yang berdiri di depan satu atau lebih web service lain. Ia menerima permintaan (request) dari klien, lalu meneruskannya ke layanan yang sesuai di belakangnya.

Dengan menggunakan Nginx sebagai reverse proxy, Anda bisa:

  • Mengelola banyak aplikasi di satu IP atau domain.
  • Menambahkan SSL/TLS (HTTPS) di satu titik saja.
  • Menyembunyikan struktur internal aplikasi (lebih aman).
  • Meningkatkan performa dan load balancing.

Langkah-Langkah Deploy Nginx Reverse Proxy di Docker

1. Persiapkan Lingkungan Docker

Pastikan Docker dan Docker Compose sudah terinstal.
Cek dengan perintah berikut:

docker --version
docker compose version

Jika belum ada, Anda bisa menginstalnya sesuai sistem operasi Anda dari situs resmi Docker.


2. Buat Struktur Folder Proyek

Buat direktori baru untuk menampung file konfigurasi Anda:

mkdir nginx-proxy
cd nginx-proxy

Di dalamnya, buat file bernama docker-compose.yml dan folder nginx/conf.d untuk konfigurasi tambahan.

Struktur akhirnya kira-kira seperti ini:

nginx-proxy/
├── docker-compose.yml
└── nginx/
    └── conf.d/
        └── default.conf

3. Tulis Konfigurasi Docker Compose

Berikut contoh file docker-compose.yml sederhana untuk Nginx Reverse Proxy:

version: '3.8'
services:
  nginx-proxy:
    image: nginx:latest
    container_name: nginx-reverse-proxy
    ports:
      - "80:80"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
    networks:
      - webnet

  webapp:
    image: nginx:alpine
    container_name: webapp
    networks:
      - webnet

networks:
  webnet:
    driver: bridge

Penjelasan:

  • nginx-proxy → container utama yang akan menerima semua request.
  • webapp → contoh aplikasi web yang akan dilayani di belakang reverse proxy.
  • network webnet → memungkinkan kedua container berkomunikasi di jaringan yang sama.

4. Konfigurasi Nginx sebagai Reverse Proxy

Buka file nginx/conf.d/default.conf dan tambahkan konfigurasi berikut:

server {
    listen 80;
    server_name localhost;

    location / {
        proxy_pass http://webapp:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Penjelasan singkat:

  • proxy_pass http://webapp:80; → meneruskan permintaan ke container bernama webapp (yang didefinisikan di Docker Compose).
  • Header tambahan membantu meneruskan informasi IP dan Host dengan benar.

5. Jalankan Container

Setelah semuanya siap, jalankan perintah berikut:

docker compose up -d

Perintah ini akan:

  • Menarik (pull) image Nginx dan webapp.
  • Membuat jaringan virtual Docker.
  • Menjalankan kedua container secara otomatis.

Setelah selesai, buka browser dan akses http://localhost — Anda akan melihat halaman default dari webapp (Nginx bawaan).


6. Menambahkan Aplikasi Tambahan di Balik Proxy

Anda bisa menambahkan lebih banyak aplikasi hanya dengan menambah service baru di docker-compose.yml, misalnya app2, lalu menambah blok baru di konfigurasi Nginx:

server {
    listen 80;
    server_name app2.localhost;

    location / {
        proxy_pass http://app2:8080;
    }
}

Dengan begitu, Nginx akan meneruskan request ke container app2 ketika domain app2.localhost diakses.


7. Tips Tambahan untuk Produksi

Untuk lingkungan produksi, pertimbangkan hal berikut:

  • Gunakan Certbot atau Nginx Proxy Manager untuk HTTPS otomatis.
  • Pisahkan konfigurasi aplikasi dan proxy ke dalam file terpisah.
  • Gunakan Docker volume untuk menyimpan log dan konfigurasi agar tidak hilang saat container dihapus.

Anda sudah berhasil men-deploy Nginx Reverse Proxy di Docker! 🎉
Anda memahami cara kerjanya, menulis konfigurasi dari nol, hingga menghubungkan beberapa container dalam satu jaringan.

Langkah selanjutnya?
Baca juga: Cara Menambahkan SSL Gratis di Nginx Menggunakan Certbot di Docker

WhatsAppTelegramFacebookXThreadsCopy Link