Official Tech Post

Konfigurasi Reverse Proxy Nginx untuk Multi-Container Docker

Bluejack

Content Writer

Panduan Teknis: Konfigurasi Nginx Reverse Proxy untuk Multi-Container Docker

Nginx Reverse Proxy Docker Setup

Mengelola Routing Traffic Multi-Container Menggunakan Nginx

Saat menjalankan beberapa aplikasi Web / API berbasis **Docker** pada satu server Linux, Anda tidak dapat mengikat (bind) port HTTP standar (80/443) ke lebih dari satu container sekaligus. Solusi arsitektur terbaik untuk masalah ini adalah menerapkan Nginx sebagai Reverse Proxy.

Arsitektur Reverse Proxy:
Nginx berdiri di barisan paling depan untuk menerima semua *request* masuk di port 80/443, kemudian meneruskannya (forwarding) ke container aplikasi yang sesuai berdasarkan nama domain (*Server Name*) atau *URL Path*.

Skenario Topology & Setup Docker Network

Docker Container Network Architecture

Komunikasi Antar Container Dalam Satu Jaringan Bridge

Sebelum mengonfigurasi Nginx, buat *custom bridge network* di Docker agar Nginx dapat mengenali container aplikasi menggunakan nama servicenya (Internal DNS Resolver):

# Buat jaringan isolasi Docker
docker network create web-network

Jalankan dua container aplikasi contoh (misalnya Web App A di port internal 8080 dan Web App B di port 8081) di dalam jaringan yang sama:

# Container Web App A
docker run -d --name app_a --network web-network -p 8080:80 nginx:alpine

# Container Web App B
docker run -d --name app_b --network web-network -p 8081:80 nginx:alpine

Konfigurasi Block Server Nginx (Virtual Host)

Konfigurasi Nginx Block Server

Penulisan Script Konfigurasi Block Server pada Nginx

Buat file konfigurasi reverse proxy baru di lokasi /etc/nginx/conf.d/apps.conf:

# Konfigurasi Reverse Proxy Nginx untuk Web App A
server {
    listen 80;
    server_name appA.veendytech.local;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

# Konfigurasi Reverse Proxy Nginx untuk Web App B
server {
    listen 80;
    server_name appB.veendytech.local;

    location / {
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Uji Coba Konfigurasi & Reload Nginx

Selalu lakukan pengujian sintaks sintaksis Nginx sebelum memuat ulang daemon layanan untuk menghindari downtime akibat kesalahan pengetikan:

# Uji sintaksis berkas konfigurasi Nginx
sudo nginx -t

# Jika output 'syntax is ok', reload Nginx
sudo systemctl reload nginx
Gunakan Header Forwarding:
Properti proxy_set_header X-Real-IP $remote_addr; sangat penting agar aplikasi di dalam container tetap bisa mencatat alamat IP asli dari pengunjung, bukan IP internal milik Nginx.

Kesimpulan

Mengombinasikan Nginx Reverse Proxy dan Docker Container memberikan fleksibilitas tinggi dalam mengelola banyak layanan dalam satu server tanpa bentrokan alokasi port.

Selamat mencoba di Home Lab Anda!
— Tim Redaksi VeendyTech | Panduan & Dokumentasi IT Indonesia

Bagikan artikel ini:

Diskusi & Komentar