Cara Konfigurasi NGINX Reverse Proxy (2024)
NGINX adalah web server berperforma tinggi yang terkenal akan stabilitasnya, fitur-fiturnya yang lengkap, dan penggunaan resource yang rendah. Sebagai reverse proxy, NGINX bertugas menjembatani permintaan klien ke server back-end, meningkatkan keamanan, performa, dan skalabilitas aplikasi web.
Di artikel ini, kami akan membantu Anda mempelajari server NGINX reverse proxy lebih lanjut, perannya dalam arsitektur web modern, serta cara setupnya. Selain itu, kami akan memberikan panduan penginstalan dan konfigurasinya untuk memastikan aplikasi Anda berjalan dengan lebih aman dan efisien.
Yuk, baca artikelnya sampai selesai, ya!
Apa Itu NGINX Reverse Proxy?
NGINX reverse proxy adalah konfigurasi server yang mendistribusikan traffic ke berbagai server back-end berdasarkan URL, memastikan bahwa beban server dibagi secara merata agar lebih efisien dan menjaga ketersediaan resource.
Namun, tidak sekadar menangani pengalihan traffic sederhana, server NGINX reverse proxy juga memainkan peran penting dalam meningkatkan performa aplikasi web. Server ini mampu mengelola konten dinamis dan statis secara efektif, merutekannya ke server yang sesuai untuk pemrosesan dan penyajian yang optimal.
Dengan NGINX Plus, user bisa menikmati fitur-fitur yang disempurnakan, seperti load balancing (penyeimbangan beban) yang optimal, kemampuan monitoring yang menyeluruh, dan langkah-langkah keamanan yang ditingkatkan.
Di lingkungan Kubernetes, NGINX berperan sangat baik sebagai pengontrol masuknya akses (ingress), mengatur akses eksternal ke berbagai layanan, yang merupakan komponen utama dalam deployment aplikasi cloud-native yang bisa diatur sesuai kebutuhan.
Selain itu, NGINX meningkatkan efisiensi jaringan melalui fungsi gateway API miliknya, yang menyederhanakan pengelolaan traffic jaringan dan memastikan perutean yang efektif ke layanan upstream.
Cara Kerja NGINX Reverse Proxy
Pada dasarnya, NGINX reverse proxy bertindak sebagai jembatan antara perangkat klien dengan server back-end, seperti LiteSpeed atau Apache, untuk mengelola permintaan yang masuk dalam pengaturan reverse proxy.
Proses Penanganan Permintaan
Ketika perangkat klien mengirimkan permintaan HTTP ke aplikasi web Anda, permintaan ini akan mencapai server NGINX reverse proxy dulu. Kemudian, NGINX memeriksa detail permintaan tersebut, seperti URL dan header, untuk menentukan penanganan yang sesuai.
Untuk permintaan konten statis, NGINX mengoptimalkan penyajiannya dengan menampilkan konten dari cache sehingga membantu mempercepat loading secara signifikan. Sementara itu, permintaan konten dinamis yang membutuhkan pemrosesan real-time akan diteruskan ke server back-end yang sesuai.
Pengambilan Keputusan untuk Forwarding Server Back-End
NGINX menggunakan berbagai metode load balancing untuk menentukan server back-end mana yang akan meneruskan permintaan, seperti:
- Round robin. Mendistribusikan permintaan secara merata di seluruh server, mencegah salah satu server kelebihan beban.
- Koneksi paling sedikit. Mengirimkan permintaan ke server yang menangani koneksi aktif paling sedikit, yang cocok untuk koneksi jangka panjang.
- IP Hash. Mengalokasikan permintaan berdasarkan alamat IP klien, memastikan pengguna berinteraksi secara konsisten dengan server yang sama, yang membantu menjaga waktu aktif sesi.
Konfigurasi Tingkat Lanjut
Untuk skenario yang lebih rumit, Anda bisa mengonfigurasi aturan NGINX berdasarkan header permintaan, jenis konten, bahkan modul kode khusus sehingga keputusan penerusan bisa ditentukan secara lebih tepat.
Kemampuan adaptasi ini memungkinkan NGINX mengarahkan traffic secara efisien ke server web dan aplikasi, serta berfungsi sebagai forward proxy untuk permintaan keluar apabila dikonfigurasi untuk tugas tersebut.
Persiapan Awal Setup NGINX Reverse Proxy
Sebelum mengonfigurasi NGINX reverse proxy di VPS (virtual private server), pastikan Anda sudah menyiapkan hal-hal penting berikut ini untuk memastikan konfigurasi yang lancar dan efektif:
- Akses server. Anda memerlukan akses root atau sudo ke VPS untuk menginstal software dan memodifikasi file konfigurasi.
- Nama domain. Idealnya, Anda harus memiliki nama domain yang mengarah ke alamat IP VPS Anda. Setup ini memungkinkan akses ke server NGINX reverse proxy menggunakan nama domain, bukan hanya satu alamat IP.
- Server back-end. Fungsi utama reverse proxy adalah merutekan traffic ke satu atau beberapa server back-end, seperti server Apache. Pastikan server back-end Anda dikonfigurasi dengan benar dan sudah berjalan sebelum mengonfigurasi NGINX reverse proxy.
- Konfigurasi jaringan. VPS Anda harus dikonfigurasikan untuk mengizinkan traffic HTTP dan HTTPS. Sesuaikan pengaturan firewall untuk mengizinkan koneksi pada port 80 (HTTP) dan port 443 (HTTPS).
- Memahami konfigurasi NGINX. Pelajari dan pahami sintaksis konfigurasi default NGINX, karena Anda perlu memodifikasi file konfigurasi untuk menyiapkan reverse proxy.
- Sertifikat SSL (opsional, tapi disarankan). Guna mengaktifkan koneksi HTTPS, sebaiknya dapatkan sertifikat SSL untuk domain Anda. Enkripsi mengamankan data yang dikirimkan antara klien dan reverse proxy.
Cara Setup NGINX sebagai Reverse Proxy
Kami akan memandu Anda mengonfigurasi NGINX reverse proxy pada VPS Hostinger yang menjalankan Ubuntu 22.04.
1. Instal NGINX
Untuk menyiapkan NGINX reverse proxy, Anda harus menginstal server NGINX pada VPS lebih dulu. Ikuti langkah-langkah berikut ini untuk melakukannya:
- Buka PuTTY atau klien SSH pilihan Anda lalu login ke VPS menggunakan kredensial Anda.
- Update dan upgrade paket server Anda untuk menghindari potensi konflik, dan pastikan Anda memiliki patch keamanan terbaru. Gunakan perintah-perintah Linux ini untuk melakukannya:
sudo apt update sudo apt upgrade -y
- Instal versi terbaru NGINX menggunakan package manager dengan menjalankan:
sudo apt install nginx -y
- NGINX akan mulai secara otomatis setelah penginstalan. Untuk memverifikasi bahwa NGINX telah berjalan, gunakan:
sudo systemctl status nginx
Output yang dihasilkan akan menunjukkan bahwa layanan NGINX sudah aktif (berjalan), seperti contoh berikut:
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2024-01-01 12:34:56 UTC; 2min 22s ago Docs: man:nginx(8) Main PID: 1234 (nginx) Tasks: 2 (limit: 1152) Memory: 5.3M CGroup: /system.slice/nginx.service ├─1234 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─1235 nginx: worker process
Apabila VPS Anda sudah memiliki firewall yang aktif, Anda juga perlu mengizinkan traffic ke NGINX. Untuk sistem UFW (Uncomplicated Firewall), izinkan traffic pada port yang sesuai dengan:
sudo ufw allow 'Nginx Full'
2. Konfigurasikan Struktur File
Ketika Anda menginstal NGINX, sistem akan secara otomatis menyiapkan beberapa direktori dan file penting untuk konfigurasi dan pengoperasiannya.
Anda perlu mengelola file konfigurasi NGINX untuk mengatur fungsionalitasnya sesuai kebutuhan tertentu, misalnya mengelola beban kerja yang beragam dan mengarahkan permintaan secara efisien ke beberapa server.
Struktur File Konfigurasi NGINX Dasar
File konfigurasi inti untuk NGINX adalah nginx.conf, yang terdapat di /etc/nginx/. File ini berisi pengaturan global dan mencakup directive (arahan) untuk mengambil konfigurasi tambahan dari file dan direktori lain:
- /etc/nginx/nginx.conf. File konfigurasi NGINX utama.
- /etc/nginx/sites-available/. Menyimpan konfigurasi calon host virtual. Setiap file di sini mewakili situs yang berbeda, yang bisa diaktifkan atau dinonaktifkan secara terpisah.
- /etc/nginx/sites-enabled/. Berisi link simbolis ke konfigurasi yang ada di sites-available, yang menurut Anda harus digunakan oleh NGINX. Hanya konfigurasi yang tertaut dalam direktori ini yang akan aktif.
- /etc/nginx/conf.d/. Umumnya menyimpan konfigurasi global yang berlaku untuk semua situs. File yang berakhiran .conf dalam direktori ini secara otomatis disertakan dalam konfigurasi utama NGINX.
Directive NGINX Penting
Untuk memanfaatkan NGINX secara efektif, Anda perlu memahami directive utamanya:
- server. Mendefinisikan blok server, setiap blok server bisa menghosting sebuah website atau bagian website. Blok ini mencakup directive seperti listen dan server_name.
- location. Menentukan cara memproses permintaan resource yang berbeda dalam satu blok server. Blok ini bisa menentukan konten web dan pengaturan proxy.
3. Setup NGINX sebagai Reverse Proxy
Untuk mengonfigurasi NGINX sebagai reverse proxy, Anda perlu membuat file konfigurasi baru. File ini akan berisi blok server dan directive yang diperlukan untuk permintaan perutean. Ikuti langkah-langkah berikut ini:
- Buka direktori konfigurasi:
cd /etc/nginx/sites-available/
- Gunakan editor teks seperti nano untuk membuat file konfigurasi yang diberi nama sesuai dengan nama website Anda, misalnya:
sudo nano example.com
- Dalam file konfigurasi NGINX, siapkan server untuk proses listen di port 80, menggunakan directive proxy_pass untuk meneruskan permintaan proxy ke server back-end Anda:
server { listen 80; server_name example.com; location / { proxy_pass http://your_backend_server_ip; proxy_set_header Host $host; # Forwarded host proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect off; } }
Ganti your_backend_server_ip dengan alamat IP server back-end Anda yang sebenarnya.
Mengonfigurasi Load Balancing
Untuk menyiapkan load balancer, tentukan blok upstream dan gunakan proxy_pass di dalam blok server Anda untuk mendistribusikan traffic di antara beberapa server:
upstream myapp1 { server backend1.example.com; server backend2.example.com; } server { listen 80; server_name example.com; location / { proxy_pass http://myapp1; proxy_next_upstream error timeout; # Additional settings... } }
Menangani Konten Statis
Untuk efisiensi, sajikan konten statis secara langsung dari NGINX menggunakan blok location sendiri:
server { listen 80; server_name example.com; location / { proxy_pass http://your_backend_server_ip; # Proxy settings... } location /static/ { root /path/to/static/files; expires 30d; } }
Menyelaraskan Directive Proxy
Sesuaikan cara NGINX berinteraksi dengan server proxy Anda menggunakan berbagai directive proxy_ untuk meningkatkan performa dan mengelola permintaan proxy secara efektif:
- proxy_pass. Menentukan protokol dan alamat server yang menggunakan proxy. Berikut contoh penggunaan dasar untuk meneruskan permintaan berdasarkan URI permintaan:
location / { proxy_pass http://backend.example.com; }
- proxy_set_header. Memodifikasi atau menambahkan header pada permintaan yang dikirim dari server asal, memastikan server tersebut menerima semua informasi yang diperlukan tentang permintaan asli:
location / { proxy_pass http://backend.example.com; 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_cache. Mengaktifkan respons cache dari server yang menggunakan proxy. Konfigurasikan bersama dengan proxy_cache_path untuk menentukan parameter cache:
http { proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; server { location / { proxy_pass http://backend.example.com; proxy_cache my_cache; } } }
- proxy_buffering. Mengontrol buffering respons, mematikannya bisa mengurangi latensi untuk kasus penggunaan tertentu:
location / { proxy_pass http://backend.example.com; proxy_buffering off; }
- proxy_ssl. Memastikan koneksi yang aman dengan enkripsi SSL ke server yang menggunakan proxy:
location / { proxy_pass https://backend.example.com; proxy_set_header X-Forwarded-Proto https; }
- proxy_buffer_size. Menentukan ukuran buffer untuk bagian pertama respons:
location / { proxy_pass http://backend.example.com; proxy_buffer_size 4k; }
- Timeout proxy. Mengatur batas waktu untuk membuat koneksi, membaca, dan mengirim data ke server yang menggunakan proxy:
location / { proxy_pass http://backend.example.com; proxy_connect_timeout 60s; proxy_read_timeout 60s; proxy_send_timeout 60s; }
4. Lakukan Pengujian pada NGINX Reverse Proxy
Setelah selesai mengonfigurasi NGINX reverse proxy, saatnya mengaktifkan pengaturan, menguji kesalahan sintaksis, dan menerapkan perubahan. Ikuti langkah-langkahnya di bawah ini:
- Buat link simbolis dari file konfigurasi Anda di sites-available ke sites-enabled untuk mengaktifkannya:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
- Uji NGINX untuk menghindari gangguan layanan akibat kesalahan konfigurasi:
sudo nginx -t
Apabila terdeteksi adanya masalah NGINX reverse proxy, command tersebut akan menunjukkan letaknya sehingga Anda bisa memperbaikinya segera.
Muat Ulang atau Mulai Ulang NGINX
Untuk menerapkan perubahan konfigurasi, Anda bisa memuat ulang atau memulai ulang server NGINX.
- Muat ulang (reload) NGINX. Umumnya lebih disukai karena menerapkan perubahan tanpa memutuskan koneksi yang ada:
sudo systemctl reload nginx
- Mulai ulang (restart) NGINX. Kalau perlu, Anda bisa memulai ulang NGINX sepenuhnya, meskipun proses ini akan mengganggu layanan sementara:
sudo systemctl restart nginx
Terkadang, restart diperlukan untuk perubahan yang lebih signifikan atau penyelesaian masalah kesalahan NGINX.
Kesimpulan
Melalui panduan ini, Anda sudah mempelajari cara setup NGINX sebagai server reverse proxy, mulai dari penginstalan, konfigurasi, dan pengujiannya.
Dengan mengelola dan mendistribusikan permintaan masuk secara merata, server Anda pun bisa digunakan secara optimal, dan aplikasi web Anda bisa berjalan dengan lancar.
Selanjutnya, Anda bisa menerapkan langkah-langkah di atas untuk meningkatkan performa, keamanan, dan skalabilitas lingkungan server Anda dengan NGINX.
Tanya Jawab (FAQ) NGINX Reverse Proxy
Bagian ini akan menjawab pertanyaan paling umum tentang server NGINX reverse proxy.
Apa Keuntungan Menggunakan NGINX Reverse Proxy?
Menggunakan server NGINX reverse proxy bisa meningkatkan performa dengan menyeimbangkan traffic di beberapa web server. Server ini juga meningkatkan keamanan dan skalabilitas di pusat data sehingga ideal untuk mengelola aplikasi web.
Apakah Bisa Menggunakan NGINX sebagai Reverse Proxy untuk Beberapa Server Back-End?
Ya, Anda bisa menggunakan NGINX sebagai reverse proxy untuk beberapa back-end, bahkan yang menggunakan teknologi berbeda seperti Apache Tomcat. Setup ini akan memperbaiki alokasi resource dan meningkatkan performa server lain.
Apakah Ada Pertimbangan Keamanan Saat Setup NGINX Reverse Proxy?
Saat mengonfigurasi NGINX reverse proxy, gunakan SSL untuk mengamankan transmisi data. Mengingat server ini berfungsi sebagai titik masuk tunggal, Anda wajib menerapkan langkah-langkah keamanan yang ketat. Selain itu, pastikan WebSockets dikonfigurasi dengan benar untuk menjaga komunikasi real-time yang aman.
Bisakah Menyimpan Konten di Cache dengan NGINX Reverse Proxy?
Ya, menggunakan cache NGINX reverse proxy bisa mengurangi waktu loading dan permintaan server dengan menyimpan salinan resource yang sering diakses. Hal ini sangat berguna untuk layanan mikro dan virtual host, menyederhanakan penyajian konten dan meningkatkan pengalaman pengguna.
Komentar
December 11 2021
Makasih kak, akhirnya paham fungsi proxy_pass