Di dunia jaringan komputer, reverse proxy adalah server yang bertindak sebagai perantara untuk permintaan dari klien ke server lain. Berbeda dengan forward proxy yang menyembunyikan identitas klien, reverse proxy menyembunyikan identitas server. Pengguna berkomunikasi langsung dengan reverse proxy, dan reverse proxy kemudian meneruskan permintaan tersebut ke satu atau beberapa server di belakangnya.
Manfaat Menggunakan Reverse Proxy
Ada beberapa keuntungan utama menggunakan reverse proxy:
-
Keamanan yang Ditingkatkan
Reverse proxy dapat menyembunyikan alamat IP dari server backend Anda. Ini membuat lebih sulit bagi penyerang untuk melancarkan serangan langsung ke server Anda, seperti serangan DDoS. Reverse proxy juga dapat dikonfigurasi untuk menyaring lalu lintas berbahaya. -
Load Balancing
Jika Anda memiliki beberapa server backend, reverse proxy dapat mendistribusikan lalu lintas yang masuk secara merata di antara server-server tersebut. Ini membantu mencegah satu server menjadi kelebihan beban dan meningkatkan ketersediaan serta skalabilitas aplikasi Anda. -
Caching
Reverse proxy dapat menyimpan salinan konten statis (seperti gambar, CSS, dan JavaScript) dan menyajikannya langsung ke klien tanpa harus meminta dari server backend setiap saat. Ini secara signifikan mengurangi beban pada server backend dan mempercepat waktu muat bagi pengguna. -
Enkripsi SSL/TLS
Anda dapat mengelola sertifikat SSL/TLS di reverse proxy, sehingga semua lalu lintas antara klien dan reverse proxy dienkripsi. Ini menyederhanakan konfigurasi SSL/TLS karena Anda tidak perlu mengonfigurasinya di setiap server backend. -
Kompresi
Reverse proxy dapat mengompresi respons dari server backend sebelum mengirimkannya ke klien. Ini mengurangi jumlah data yang perlu ditransfer dan dapat meningkatkan kecepatan situs web Anda, terutama bagi pengguna dengan koneksi internet yang lebih lambat.
Cara Membuat Reverse Proxy dengan Nginx
Nginx adalah server web sumber terbuka yang sangat populer dan sering digunakan sebagaireverse proxy karena kinerjanya yang tinggi dan konfigurasinya yang fleksibel. Berikut adalah langkah-langkah dasar untuk menyiapkan Nginx sebagai reverse proxy di server berbasis Ubuntu/Debian.
Instalasi Nginx
Pertama, pastikan Nginx sudah terinstal di server Anda. Jika belum, Anda dapat menginstalnya dengan perintah berikut di terminal:
sudo apt update
sudo apt install nginx
Setelah instalasi selesai, Anda dapat memeriksa status layanan Nginx untuk memastikannya berjalan:
sudo systemctl status nginx
Konfigurasi Dasar Reverse Proxy
Selanjutnya, Anda perlu membuat file konfigurasi baru untuk reverse proxy Anda. Sebaiknya buat file baru di direktori /etc/nginx/sites-available/
daripada mengedit file default. Misalnya, kita akan membuat file bernama reverse-proxy.conf
:
sudo nano /etc/nginx/sites-available/reverse-proxy.conf
Di dalam file ini, tambahkan konfigurasi berikut. Konfigurasi ini akan memberitahu Nginx untuk mendengarkan permintaan pada port 80 dan meneruskannya ke serverbackend yang berjalan di http://localhost:3000
.
server {
listen 80;
server_name domainanda.com www.domainanda.com;
location / {
proxy_pass http://localhost: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;
}
}
Penjelasan Konfigurasi:
-
listen 80;
: Nginx akan mendengarkan lalu lintas HTTP pada port 80. -
server_name domainanda.com www.domainanda.com;
: Ganti dengan nama domain Anda. Nginx akan menggunakan blokserver
ini untuk permintaan yang cocok dengan nama domain ini. -
location / { ... }
: Blok ini menangani semua permintaan yang masuk. -
proxy_pass http://localhost:3000;
: Ini adalah inti dari konfigurasi reverse proxy. Perintah ini memberitahu Nginx untuk meneruskan semua permintaan ke server yang berjalan dihttp://localhost:3000
. Ganti alamat ini dengan alamat server backend Anda. -
proxy_set_header ...
: Baris-baris ini meneruskan beberapa header HTTP dari klien asli ke server backend. Ini penting agar aplikasi backend Anda dapat melihat informasi tentang klien asli, seperti alamat IP-nya.
Aktifkan Konfigurasi dan Restart Nginx
Setelah menyimpan file konfigurasi, Anda perlu mengaktifkannya dengan membuat symbolic link dari file tersebut ke direktori /etc/nginx/sites-enabled/
:
sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/
Sebelum me-restart Nginx, selalu merupakan ide yang baik untuk menguji konfigurasi Anda untuk memastikan tidak ada kesalahan sintaks:
sudo nginx -t
Jika tes berhasil, Anda akan melihat pesan yang mengatakan sintaksnya oke. Sekarang, Anda dapat me-restart Nginx untuk menerapkan perubahan:
sudo systemctl restart nginx
Sekarang, setiap lalu lintas yang masuk ke domainanda.com
akan diteruskan ke aplikasi Anda yang berjalan di port 3000.
Langkah Tambahan: Mengamankan dengan SSL (HTTPS)
Sangat disarankan untuk mengamankan situs Anda dengan SSL. Anda dapat menggunakan Certbot untuk mendapatkan sertifikat SSL gratis dari Let’s Encrypt.
-
Instal Certbot:Bash
sudo apt install certbot python3-certbot-nginx
-
Dapatkan Sertifikat SSL:Jalankan perintah berikut dan ikuti petunjuknya. Certbot akan secara otomatis mengedit file konfigurasi Nginx Anda untuk mengatur HTTPS.Bash
sudo certbot --nginx -d domainanda.com -d www.domainanda.com
Setelah selesai, Certbot akan mengonfigurasi Nginx untuk mengalihkan semua lalu lintas HTTP ke HTTPS dan menerapkan sertifikat SSL.