Cara Mudah Konfigurasi Nginx Reverse Proxy Menggunakan Nginx Proxy Manager (Docker + SSL)

Cara Mudah Konfigurasi Nginx Reverse Proxy Menggunakan Nginx Proxy Manager (Docker + SSL)

Nginx Proxy Manager adalah aplikasi open-source berbasis Docker yang digunakan untuk mengelola Nginx Reverse Proxy melalui antarmuka web (GUI). Tool ini dirancang untuk mempermudah administrator sistem dan DevOps Engineer dalam mengatur routing HTTP/HTTPS, domain, subdomain, serta sertifikat SSL tanpa harus menulis konfigurasi Nginx secara manual.

Dalam arsitektur modern berbasis cloud, container, dan microservices, reverse proxy berperan penting untuk:

  • Mengelola trafik web ke berbagai aplikasi backend

  • Mengamankan layanan menggunakan HTTPS

  • Menyederhanakan manajemen domain dan SSL

  • Meningkatkan skalabilitas dan maintainability sistem

Nginx Proxy Manager menjadi solusi populer karena menggabungkan kemudahan GUI dengan stabilitas Nginx.

Fitur Utama Nginx Proxy Manager

Beberapa kapabilitas utama yang membuat Nginx Proxy Manager banyak digunakan di lingkungan production:

  • Antarmuka web untuk manajemen reverse proxy

  • Manajemen proxy host berbasis domain dan subdomain

  • Otomatisasi SSL menggunakan Let’s Encrypt

  • Dukungan HTTP dan HTTPS

  • Integrasi penuh dengan Docker container

  • Cocok untuk VPS, cloud server, dan self-hosted environment

Arsitektur yang Digunakan

Pada tutorial ini, arsitektur yang dibangun meliputi:

  • Website HTML sederhana berjalan di Docker container Nginx

  • Nginx Proxy Manager sebagai reverse proxy

  • SSL HTTPS otomatis menggunakan Let’s Encrypt

  • Seluruh container berada dalam satu Docker network

Pendekatan ini umum digunakan pada server cloud dan VPS production.

1. Install Docker di Ubuntu

Langkah pertama adalah memastikan Docker sudah terpasang di server Ubuntu.

Menambahkan GPG Key Docker

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Menambahkan Repository Docker

echo \ "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Update Repository dan Install Docker

sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io -y

2. Deploy Website Menggunakan Docker Container

Pada tahap ini, kita akan membuat website HTML sederhana sebagai backend aplikasi.

Membuat Struktur Direktori

mkdir app-domainxyz cd app-domainxyz mkdir www

Membuat File index.html

nano www/index.html

Isi file:

<!DOCTYPE html> <html> <head> <title>Website App DomainXYZ</title> </head> <body> <h1>Selamat datang di website App DomainXYZ</h1> <p>Ini adalah contoh website HTML yang dijalankan menggunakan Docker.</p> </body> </html>

Membuat File docker-compose.yml

nano docker-compose.yml

Isi konfigurasi:

version: '3.8' services: web: image: nginx:latest container_name: app-domainxyz ports: - "127.0.0.1:8080:80" volumes: - ./www:/usr/share/nginx/html restart: always networks: default: external: true name: proxy_network

Membuat Docker Network

sudo docker network create proxy_network

Menjalankan Container Website

sudo docker compose up -d

Verifikasi Container

sudo docker ps

Uji Akses Website

curl http://127.0.0.1:8080

Jika source HTML tampil, berarti website backend sudah berjalan.

3. Install Nginx Proxy Manager

Sekarang kita akan menginstal Nginx Proxy Manager menggunakan Docker Compose.

Membuat Direktori Project

mkdir nginx-proxy-manager cd nginx-proxy-manager mkdir data letsencrypt mysql

Membuat File docker-compose.yml

nano docker-compose.yml

Isi konfigurasi:

version: '3.8' services: app: image: jc21/nginx-proxy-manager:latest container_name: nginx-proxy-manager restart: unless-stopped ports: - "80:80" - "443:443" - "81:81" environment: DB_MYSQL_HOST: db DB_MYSQL_PORT: 3306 DB_MYSQL_USER: npm DB_MYSQL_PASSWORD: npm DB_MYSQL_NAME: npm volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt depends_on: - db db: image: jc21/mariadb-aria:latest container_name: mariadb-nginx-proxy-manager restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: npm MYSQL_DATABASE: npm MYSQL_USER: npm MYSQL_PASSWORD: npm volumes: - ./mysql:/var/lib/mysql networks: default: external: true name: proxy_network

Menjalankan Nginx Proxy Manager

sudo docker compose up -d

Verifikasi Container

sudo docker ps

4. Login dan Konfigurasi Awal Nginx Proxy Manager

Akses Nginx Proxy Manager melalui browser:

http://IP-SERVER:81

Login default:

Setelah login, sistem akan meminta:

  • Mengganti email admin

  • Mengganti password admin

Langkah ini wajib untuk keamanan server.

5. Konfigurasi Proxy Host

Sekarang kita akan menghubungkan domain ke container website backend.

Menambahkan Proxy Host

Masuk menu Hosts → Proxy Hosts → Add Proxy Host, lalu isi:

  • Domain Names: domain atau subdomain

  • Scheme: http

  • Forward Hostname / IP: app-domainxyz

  • Forward Port: 80

Simpan konfigurasi.

Uji Akses Domain

Akses domain melalui browser, misalnya:

http://app.domainxyz.com

Jika website tampil, reverse proxy sudah berfungsi.

6. Install SSL Let’s Encrypt

Untuk mengaktifkan HTTPS, edit Proxy Host dan buka tab SSL.

Aktifkan opsi:

  • Request a new SSL Certificate

  • Force SSL

  • HTTP/2 Support

  • Masukkan email Let’s Encrypt

  • Setujui Terms of Service

Simpan konfigurasi.

Verifikasi HTTPS

Akses kembali domain, sistem akan otomatis redirect ke HTTPS.

Penutup

Dengan Nginx Proxy Manager, konfigurasi Nginx Reverse Proxy + SSL menjadi jauh lebih sederhana, terstruktur, dan aman. Solusi ini sangat cocok untuk:

  • VPS dan cloud server

  • Aplikasi berbasis Docker

  • Multi-domain dan multi-subdomain

  • Lingkungan production dan staging

Pendekatan ini juga mendukung praktik DevOps modern, meningkatkan keamanan, dan mempercepat deployment aplikasi berbasis web.