Nginx Reverse Proxy di Ubuntu 22.04 LTS

Syslab.id – Tutorial kali ini kami akan membahas tentang bagaimana cara konfigurasi Nginx Reverse Proxy di Ubuntu 22.04 LTS.

Apa Itu Nginx Reverse Proxy

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.

Reverse Proxy adalah salah satu jenis dari proxy, biasanya reverse proxy digunakan sebagai perantara antara client dengan web server.

Cara Kerja Nginx Reverse Proxy

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.

Manfaat dan Fungsi Nginx Reverse Proxy

Dikutip dari situs resmi Nginx, berikut merupakan manfaat yang akan Anda dapatkan jika menggunakan Reverse Proxy Nginx diantaranya.

1. Load Balancing

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.

2. Web Acceleration

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).

3. Security dan Anonymity

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.

4. Caching

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:

Cara Menggunakan Nginx Reverse Proxy

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

Demo Nginx Reverse Proxy dan Apache Web Server

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:

  • Disini kami menggunakan upstream, kita perlu mendifine ip dan port yang sudah kita tentukan di konfigurasi apache sebelumnya
  • Server Name: isikan sub domain atau domain sesuai dengan yang ada di virtual host apache
  • Proxy_pass: Merupakan konfigurasi reverse proxy nya, pastikan sama dengan yang ada di upstream

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 🔥

Tagged with:
LSA

Penulis dan pengelola konten di Syslab ID. Dengan latar belakang di bidang sistem administrasi dan IT infrastruktur, Admin Syslab bertujuan untuk menyediakan materi yang mudah dipahami dan bermanfaat bagi pemula yang ingin memulai karir di dunia IT, khususnya dalam sistem operasi, virtualisasi, dan automasi

You might also like
Manajemen User di Ubuntu 22.04 LTS

Manajemen User di Ubuntu 22.04 LTS

Instalasi PHP di Ubuntu Server 22.04 LTS

Instalasi PHP di Ubuntu Server 22.04 LTS

Cara Menjalankan Apache dan Nginx Secara Bersamaan di Ubuntu 22.04 LTS

Cara Menjalankan Apache dan Nginx Secara Bersamaan di Ubuntu 22.04 LTS

Nginx Web Server di Ubuntu 22.04 LTS

Nginx Web Server di Ubuntu 22.04 LTS

Apache Web Server di Ubuntu 22.04 LTS

Apache Web Server di Ubuntu 22.04 LTS

Mengenal Apa itu Web Server

Mengenal Apa itu Web Server