Saat mengelola server VPS atau server lokal yang diakses dari internet, sering kali kita menjalankan beberapa aplikasi secara bersamaan. Misalnya Grafana untuk monitoring, Portainer untuk manajemen Docker, dan Uptime Kuma untuk pemantauan layanan.
Masalah muncul ketika setiap aplikasi berjalan pada port yang berbeda. Pengguna harus mengakses URL seperti:
- server.com:3000 (Grafana)
- server.com:9000 (Portainer)
- server.com:3001 (Uptime Kuma)
Selain kurang profesional, cara ini juga menyulitkan pengguna dan kurang optimal dari sisi keamanan.
Solusi yang paling umum digunakan adalah Reverse Proxy Nginx. Dengan reverse proxy, seluruh aplikasi dapat diakses melalui satu IP publik menggunakan subdomain yang berbeda.
Contohnya:
- grafana.domain.com
- portainer.domain.com
- status.domain.com
Konfigurasi ini banyak digunakan oleh administrator jaringan, DevOps Engineer, dan pengelola infrastruktur modern.
Apa Itu Reverse Proxy?
Reverse Proxy adalah server perantara yang menerima permintaan dari pengguna kemudian meneruskannya ke aplikasi yang berjalan di belakangnya.
Secara sederhana:
User โ Nginx โ Aplikasi Internal
Keuntungan penggunaan reverse proxy:
- Menggunakan satu IP publik untuk banyak aplikasi
- URL lebih rapi dan profesional
- Mudah menerapkan SSL/TLS
- Menambah lapisan keamanan
- Memudahkan pengelolaan layanan
Topologi Implementasi
Misalkan server memiliki konfigurasi berikut:
| Aplikasi | Port Internal | Subdomain |
|---|---|---|
| Grafana | 3000 | grafana.domain.com |
| Portainer | 9000 | portainer.domain.com |
| Uptime Kuma | 3001 | status.domain.com |
Nginx akan menerima semua request dari internet dan meneruskannya ke aplikasi yang sesuai berdasarkan nama subdomain.
Persiapan Sebelum Konfigurasi
Pastikan:
Domain Sudah Mengarah ke Server
Buat DNS Record:
- grafana.domain.com โ IP Server
- portainer.domain.com โ IP Server
- status.domain.com โ IP Server
Nginx Sudah Terinstal
Ubuntu/Debian:
sudo apt update
sudo apt install nginx -y
Pastikan service berjalan:
sudo systemctl status nginx
Konfigurasi Reverse Proxy Grafana
Buat file konfigurasi:
sudo nano /etc/nginx/sites-available/grafana
Isi konfigurasi:
server {
listen 80;
server_name grafana.domain.com;
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
}
Aktifkan konfigurasi:
sudo ln -s /etc/nginx/sites-available/grafana /etc/nginx/sites-enabled/
Konfigurasi Reverse Proxy Portainer
Buat file:
sudo nano /etc/nginx/sites-available/portainer
Isi:
server {
listen 80;
server_name portainer.domain.com;
location / {
proxy_pass http://127.0.0.1:9000;
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;
}
}
Aktifkan:
sudo ln -s /etc/nginx/sites-available/portainer /etc/nginx/sites-enabled/
Konfigurasi Reverse Proxy Uptime Kuma
Buat file:
sudo nano /etc/nginx/sites-available/uptime-kuma
Isi:
server {
listen 80;
server_name status.domain.com;
location / {
proxy_pass http://127.0.0.1:3001;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Baris Upgrade dan Connection diperlukan agar fitur WebSocket Uptime Kuma berjalan dengan baik.
Menguji Konfigurasi Nginx
Periksa syntax konfigurasi:
sudo nginx -t
Jika berhasil:
sudo systemctl reload nginx
Output yang diharapkan:
syntax is ok
test is successful
Menambahkan SSL Gratis dengan Let’s Encrypt
Instal Certbot:
sudo apt install certbot python3-certbot-nginx -y
Jalankan:
sudo certbot --nginx
Pilih domain:
- grafana.domain.com
- portainer.domain.com
- status.domain.com
Certbot akan:
- Membuat sertifikat SSL
- Mengaktifkan HTTPS
- Mengatur redirect HTTP ke HTTPS
Hasil akhirnya:
https://grafana.domain.com
https://portainer.domain.com
https://status.domain.com
Tips Keamanan Tambahan
Batasi Akses Port Internal
Gunakan firewall agar port aplikasi tidak langsung dapat diakses dari internet.
Contoh UFW:
sudo ufw allow 80
sudo ufw allow 443
sudo ufw deny 3000
sudo ufw deny 3001
sudo ufw deny 9000
Gunakan Autentikasi Tambahan
Untuk layanan penting seperti Portainer dan Grafana:
- Gunakan password yang kuat
- Aktifkan MFA jika tersedia
- Batasi akses berdasarkan IP jika diperlukan
Monitoring Log Nginx
Periksa log secara berkala:
sudo tail -f /var/log/nginx/access.log
dan
sudo tail -f /var/log/nginx/error.log
Manfaat Reverse Proxy untuk Infrastruktur Modern
Setelah menerapkan reverse proxy, pengelolaan server menjadi jauh lebih sederhana.
Manfaat yang langsung terasa:
- Akses aplikasi lebih profesional
- Mudah menambahkan SSL
- Mempermudah ekspansi layanan baru
- Meningkatkan keamanan server
- Memudahkan troubleshooting dan monitoring
Ketika nantinya Anda menambahkan aplikasi lain seperti:
- Nextcloud
- Gitea
- Jenkins
- Prometheus
- Zabbix
Anda cukup menambahkan subdomain dan blok konfigurasi Nginx baru.

Kesimpulan
Reverse Proxy Nginx merupakan solusi yang sederhana namun sangat efektif untuk mengelola banyak aplikasi dalam satu server. Dengan memanfaatkan subdomain yang berbeda, Grafana, Portainer, dan Uptime Kuma dapat berjalan pada satu IP publik tanpa harus mengekspos banyak port ke internet.
Selain membuat akses lebih profesional, pendekatan ini juga mempermudah penerapan SSL, meningkatkan keamanan, dan memudahkan pengelolaan infrastruktur dalam jangka panjang.
“Server yang baik bukan hanya berjalan, tetapi juga mudah dikelola dan aman untuk berkembang.”
Frequently Asked Questions (FAQ)
1. Apa fungsi utama reverse proxy Nginx?
Reverse proxy berfungsi meneruskan request dari pengguna ke aplikasi backend yang sesuai berdasarkan domain atau subdomain.
2. Apakah satu IP publik bisa digunakan untuk banyak aplikasi?
Ya. Dengan reverse proxy, banyak aplikasi dapat diakses melalui subdomain yang berbeda pada satu IP publik.
3. Apakah Grafana wajib menggunakan reverse proxy?
Tidak wajib, tetapi sangat disarankan untuk keamanan, kemudahan akses, dan implementasi SSL.
4. Mengapa Uptime Kuma membutuhkan konfigurasi WebSocket?
Karena beberapa fitur real-time Uptime Kuma menggunakan koneksi WebSocket untuk pembaruan status secara langsung.
5. Apakah reverse proxy dapat digunakan bersama Docker?
Ya. Bahkan kombinasi Docker dan Nginx Reverse Proxy merupakan implementasi yang sangat umum digunakan.
6. Apakah SSL Let’s Encrypt gratis?
Ya. Let’s Encrypt menyediakan sertifikat SSL gratis yang dapat diperbarui secara otomatis.
Apakah Anda sudah menerapkan reverse proxy pada server Anda?
Bagikan pengalaman, kendala, atau konfigurasi yang digunakan pada kolom komentar. Jika artikel ini bermanfaat, jangan lupa membagikannya ke rekan SysAdmin dan DevOps lainnya, serta subscribe untuk mendapatkan panduan Linux, Docker, Monitoring, dan Server Administration terbaru. Anda juga dapat membaca artikel terkait tentang Docker, Grafana, dan keamanan server untuk memperdalam pengelolaan infrastruktur modern.