Cara Mudah Konfigurasi Nginx Reverse Proxy dengan Nginx Proxy Manager

Nginx Proxy Manager adalah sebuah aplikasi open-source yang digunakan untuk mengelola dan mengkonfigurasi server proxy Nginx dengan antarmuka pengguna grafis (GUI). Nginx adalah server web yang dapat digunakan sebagai server proxy untuk mengarahkan permintaan HTTP dan HTTPS ke berbagai layanan dan aplikasi di belakangnya. Nginx Proxy Manager memudahkan pengguna dalam mengatur server proxy Nginx tanpa harus melakukan konfigurasi manual yang rumit.

Nginx reverse proxy + SSL dengan Docker container
Nginx reverse proxy + SSL dengan Docker container

Beberapa fitur utama Nginx Proxy Manager meliputi:

  • Antarmuka Pengguna Grafis: Nginx Proxy Manager menyediakan antarmuka pengguna grafis berbasis web yang mudah digunakan, memungkinkan pengguna untuk mengatur proxy dan mengelola sertifikat SSL.
  • Pengelolaan Host: Pengguna dapat dengan mudah menambahkan host untuk mengarahkan permintaan HTTP dan HTTPS ke aplikasi atau layanan yang diinginkan.
  • Sertifikat SSL: Nginx Proxy Manager mendukung otomatisasi sertifikat SSL menggunakan Let’s Encrypt, sehingga pengguna dapat mengamankan koneksi ke aplikasi mereka.

Nginx Proxy Manager sangat berguna bagi pengguna yang ingin mengarahkan lalu lintas web ke berbagai layanan atau aplikasi, seperti server web, aplikasi berbasis kontainer, atau aplikasi lainnya, tanpa harus melakukan konfigurasi manual yang kompleks. Dengan antarmuka pengguna grafisnya yang intuitif, ini menjadi solusi yang populer untuk mengelola proxy Nginx dengan mudah.

1. Install Docker

Langkah awal yang harus dilakukan yaitu install Docker terlebih dulu jika belum tersedia. Berikut ini langkah-langkah install Docker di Ubuntu.

Memasang key untuk repository Docker.

Memasang repository Docker.

Update repository.

Menginstal Docker.

2. Deploy Website

Langkah berikutnya yaitu kita deploy website HTML sederhana yang akan dijalankan dengan menggunakan Docker container.

Membuat direktori untuk project website, misal app-domainxyz.

Masuk ke direktori app-domainxyz.

Membuat direktori www untuk penyimpanan semua file website.

Membuat file index.html sederhana di dalam direktori www.

Contoh isi file index.html.

Membuat file docker-compose.yml untuk build dan deploy website HTML di atas Docker container.

Masukkan konfigurasi docker-compose.yml.

Penjelasan baris konfigurasi docker-compose.yml untuk app-domainxyz.

  • Membuat container dengan nama app-domainxyz dengan menggunakan Docker image nginx-latest.
  • Website dapat diakses melalui IP 127.0.0.1 port 8080 pada host, lalu diarahkan ke port 80 pada container app-domainxyz./li>
  • Direktori www di-mount ke direktori /usr/share/nginx/html di dalam container.
  • Default network memakai network proxy_network yang konfigurasinya di luar Docker Compose, harus dibuat terlebih dulu.

Membuat network proxy_network.

Menjalankan konfigurasi docker-compose.yml untuk mulai build container sekaligus menjalankannya.

Pesan yang ditampilkan jika proses docker compose sudah selesai.

Memeriksa container yang berjalan saat ini, apakah sudah ada container dengan nama app-domainxyz.

Contoh hasilnya.

Menguji apakah website sudah dapat diakses melalui http://127.0.0.1:8080.

Jika berhasil, akan menampilkan source code index.html.

3. Install Nginx Proxy Manager

Membuat direktori nginx-proxy-manager.

Masuk ke direktori nginx-proxy-manager.

Membuat direktori data, letsencrypt, dan mysql.

Membuat file docker-compose.yml untuk Nginx Proxy Manager.

Masukkan konfigurasinya.

Penjelasan konfigurasi di atas:

  • Membuat container nginx-proxy-manager dengan menggunakan Docker image jc21/nginx-proxy-manager:latest.
  • Port yang diekspos 80, 443, dan 81 untuk akses web GUI Nginx Proxy Manager.
  • Membuat environment variable untuk database.
  • Mount direktori untuk data dan letsencrypt.
  • Membuat container mariadb-nginx-proxy-manager dengan menggunakan Docker image jc21/mariadb-aria:latest.
  • Mount direktori mysql.
  • Default network menggunakan proxy_network.

Menjalankan konfigurasi docker-compose.yml.

Jika proses docker compose selesai dan berhasil ditampilkan pesan:

Menampilkan container yang sedang berjalan untuk melihat apakah sudah ada container nginx-proxy-manager dan mariadb-nginx-proxy-manager yang berjalan.

Contoh hasilnya.

Menguji hasil Docker Compose untuk container nginx-proxy-manager dengan mengakses http://IP-Server:81. Default login menggunakan email [email protected] dan password changeme.

Login Nginx Proxy Manager
Login Nginx Proxy Manager

Lalu ubah email.

Mengubah alamat email admin
Mengubah alamat email admin

Lalu ubah password.

Mengubah password akun admin
Mengubah password akun admin

4. Konfigurasi Proxy Hosts

Sekarang membuat konfigurasi proxy host untuk website yang telah berjalan di container dengan port 8080.

Klik menu Hosts → Proxy Hosts, lalu tombol Add Proxy Host.

Masukkan:

  1. Domain Names: masukkan nama domain atau subdomain. Pastikan sudah diarahkan ke IP server.
  2. Scheme: pilih protokol yang digunakan, untuk awal pilih http.
  3. Forward Hostname / IP: masukkan nama container atau IP container.
  4. Forward Port: masukkan port 80.

Lalu Save.

Menambah proxy host
Menambah proxy host

Menguji hasil konfigurasi dengan mengakses domain atau subdomainnya, misal yang digunakan http://app.domainxyz.com.

Menguji akses hasil konfigurasi proxy host
Menguji akses hasil konfigurasi proxy host

5. Install SSL

Selanjutnya menginstal SSL untuk mengaktifkan protokol HTTPS.

Edit Proxy Host yang telah dibuat sebelumnya, klik tab SSL.

Masukkan:

  1. SSL Certificate pilih Request a new SSL Certificate.
  2. Force SSL aktifkan.
  3. HTTP/2 Support aktifkan.
  4. Email Address for Let's Encrypt masukkan alamat email.
  5. I Agree to the Let's Encrypt Terms of Service aktifkan.

Lalu Save.

Mengaktifkan SSL
Mengaktifkan SSL

Menguji hasil install SSL dengan mengakses http://app.domainxyz.com, akan secara otomatis redirect ke https://apps.domainxyz.com.

Menguji akses hasil konfigurasi SSL
Menguji akses hasil konfigurasi SSL

Penutup

Dalam tutorial ini, kita telah mempelajari langkah-langkah mudah untuk mengkonfigurasi Nginx Reverse Proxy menggunakan Nginx Proxy Manager. Dengan panduan ini, kita sekarang memiliki pengetahuan dan keterampilan yang diperlukan untuk mengimplementasikan Nginx Reverse Proxy dengan mudah.

Semoga tutorial ini bermanfaat.
Selamat mencoba 🙂

5 Comments

  1. saya menemukan error Error response from daemon: driver failed programming external connectivity on endpoint nginx-proxy-manager (56b98fd1bd39fa4603e3d1e41512785ef26900597b2c2 d40c2eb79676ba656ef): Error starting userland proxy: listen tcp4 0.0.0.0:80: bind: address already in use
    cara memperbaikinya gimana y?

  2. SSL cert nya ini wajib pake domain yang online ya Pak? misal cloudflare / duckdns,
    tidak bisa pakai domain local?

Leave a Reply

Your email address will not be published. Required fields are marked *