Syslab.id – Tutorial kali ini kami akan membahas tentang bagaimana cara konfigurasi Nginx Reverse Proxy di Ubuntu 22.04 LTS.
Reverse proxy adalah sebuah server yang berada di antara perangkat klien dan server backend. Fungsinya adalah meneruskan permintaan dari klien ke server yang sesuai, lalu mengembalikan respons dari server ke klien. Berbeda dengan forward proxy yang bekerja atas nama klien, reverse proxy bekerja atas nama server. Reverse proxy menerima permintaan dari klien dan bertindak sebagai gerbang ke satu atau lebih server backend, sekaligus mendistribusikan beban kerja dan menyediakan fitur tambahan.
Reverse proxy juga berbeda dengan server proxy, berikut perbedaannya:
Server proxy merupakan sebuah server yang menyediakan layanan perantara antara client host dengan server lain.
Also Read: Manajemen User di Ubuntu 22.04 LTS
Reverse Proxy adalah salah satu jenis dari proxy, biasanya reverse proxy digunakan sebagai perantara antara client dengan web server.
Untuk mempermudah kita dalam mengetahui bagaimana cara reverse proxy bekerja lihatlah gambar dibawah ini
Kita tahu bahwa reverse proxy sendiri sebagai perantara, jika di lihat dari topologi diatas alurnya sebagai berikut
Request :
Client >> Nginx Reverse Proxy >> Web server Apache (Backend)
Respons:
Web server Apache (Backend) >> Nginx Reverse Proxy >> Client
Analogi sederhananya Nginx Reverse Proxy bisa di ibaratkan sebagai (resepsionis) yang akan meneruskan ke pihak terkait jika terdapat permintaan dari public atau customer. Gambaran diatas hanyalah gambaran sederhana dari alur kerja Reverse Proxy yang berjalan dalam satu server (standanlone).
Berikut kami berikan contoh yang lebih kompleks, perhatikan gambar berikut ini.
Dari gambar diatas kita bisa melihat dimana Reverse Proxy dapat menangani satu atau lebih server web. Konfigurasi reverse proxy yang umum digunakan adalah menempatkan Nginx di depan server web Apache. Menggunakan metode ini akan memungkinkan kedua server web untuk bekerja sama memungkinkan masing-masing untuk melakukan yang terbaik. Dengan demikian Anda dapat menentukan sendiri skenario nya sesuai kebutuhan Anda.
Dikutip dari situs resmi Nginx, berikut merupakan manfaat yang akan Anda dapatkan jika menggunakan Reverse Proxy Nginx diantaranya.
Reverse proxy dapat melakukan load balancing yang membantu mendistribusikan permintaan klien secara merata di seluruh server backend. Proses ini sangat membantu dalam menghindari skenario di mana server tertentu menjadi kelebihan beban (over load) karena lonjakan permintaan yang tiba-tiba. Penyeimbangan beban juga meningkatkan redundansi seolah-olah satu server mati, proxy akan bertugas merutekan atau meredirect traffik yang masuk ke backend yang lainnya.
Reverse Proxy dapat mengkompress data “inbound” dan “outbound”, serta dapat menyimpan cache ataupun konten static dan tentunya dapat mempercepat koneksi antara client – server. Selain itu dengan menggunakan Reverse Proxy Anda dapat menerapkan Secure Sockets Layer (SSL).
Dengan reverse proxy nginx permintaan (request) tidak langsung diarahkan ke sisi backend dan disini reverse proxy nginx juga melindungi identitas server backend dan menjadi salah satu pertahanan atau security serta yang menghandle semua request yang Ada tanpa membebani server backend.
Menggunakan Nginx sebagai reverse proxy dengan caching memiliki banyak manfaat, terutama untuk meningkatkan performa aplikasi dan mengoptimalkan infrastruktur server. Berikut adalah alasan mengapa hal ini penting:
Ada berbagai cara untuk memanfaatkan Nginx sebagai reverse proxy, karena pada dasarnya reverse proxy berfungsi sebagai perantara antara klien dan server backend. Dengan peran ini, reverse proxy dapat diterapkan untuk berbagai jenis aplikasi. Berikut ini, kami berikan contoh penggunaan Nginx Reverse Proxy yang dapat Anda gunakan
Sebelum mengikuti demo ini ada baiknya Anda melihat dan mengikuti terlebih dahulu panduan seri LSA 08 – Cara Menjalankan Apache dan Nginx Secara Bersamaan di Ubuntu 22.04 LTS karena kami akan menggunakan (Nginx) yang berjalan di port default web server 80 dan untuk backend (Apache) berjalan di port 8080.
Pastikan status nya running
root@syslab:~# systemctl status nginx |grep "Active"
Active: active (running) since Wed 2024-11-27 21:27:43 UTC; 19h ago
root@syslab:~#
root@syslab:~# systemctl status apache2 |grep "Active"
Active: active (running) since Thu 2024-11-28 14:20:30 UTC; 2h 55min ago
root@syslab:~#
Kemudian kami akan mencoba membuat file website sederhana menggunakan HTML saja, silakan pindah ke direktori /var/www/html/apriori.my.id/public/ dan buat direktori website Anda
root@syslab:~# mkdir -p /var/www/html/apriori.my.id/public
Kemudian buat file index.html untuk sample websitenya
root@syslab:~# echo "<h1> Belajar Nginx Reverse Proxy Backend nya Apache @syslab.id 2025 </h1>" >> /var/www/html/apriori.my.id/public/index
.html
root@syslab:~#
Buat konfigurasi Virtual Host Apache untuk apriori.my.id
root@syslab:~# vim /etc/apache2/sites-available/apriori.my.id.conf
Isinya sebagai berikut
<VirtualHost *:8080>
ServerName apriori.my.id
DocumentRoot /var/www/html/apriori.my.id/public/
<Directory /var/www/html/apriori.my.id/public/>
Require all granted
</Directory>
</VirtualHost>
Enable config apache apriori.my.id.conf dan reload apache
root@syslab:~#
root@syslab:~# a2ensite apriori.my.id.conf
Enabling site apriori.my.id.
To activate the new configuration, you need to run:
systemctl reload apache2
root@syslab:~# systemctl reload apache2
root@syslab:~# systemctl status apache2 |grep "running"
Active: active (running) since Thu 2024-11-28 14:20:30 UTC; 3h 4min ago
root@syslab:~#
Verifikasi akses website menggunakan port 8080, hasilnya akan nampak seperti gambar dibawah ini
Karena website apriori sudah dapat diakses menggunakan port 8080, saat nya kita membuat nginx reverse proxy. Gunakan vim untuk membuat konfigurasi server block nginx untuk website apriori.my.id seperti berikut ini
root@syslab:~# vim /etc/nginx/conf.d/apriori.my.id.conf
Berikut sample config nginx reverse proxy nya
upstream apache8080 {
server 127.0.0.2:8080;
}
server {
server_name apriori.my.id;
root /var/www/html/apriori.my.id/public/;
index index.html;
access_log /var/log/nginx/apriori.my.id.access.log;
error_log /var/log/nginx/apriori.my.id.error.log;
location / {
try_files $uri $uri/ /index.html?$args;
proxy_pass http://apache8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
}
}
Catatan:
Selanjutnya reload nginx dan apache dan pastikan tidak ada miss atau kesalahan konfigurasi dari ke dua web server tersebut
Silahkan simpan dan restart nginx
root@syslab:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@syslab:~#
root@syslab:~# systemctl restart nginx
root@syslab:~#
Jika sudah selanjutnya verifikasi kembali akses ke website apriori.my.id tanpa menggunakan port
BOMMM !!!! terlihat gambar diatas Anda sudah berhasil konfigurasi Nginx Reverse Proxy dengan Backend Apache di server yang sama. Langkah ini juga dapat dilakukan jika Apache atau Backend berada di server yang berbeda Anda dapat menyesuaikannya di proxy_pass Nginx.
Selamat mencoba 🔥