Cara Membuat Proxy Terbalik di Nginx

NGINX adalah server web serbaguna dan berkinerja tinggi yang banyak digunakan sebagai server proxy terbalik. Proksi terbalik adalah perantara permintaan klien, mendistribusikannya ke satu atau lebih server backend. Penyiapan ini bermanfaat bagi penyeimbangan beban, meningkatkan keamanan, dan menyediakan ketersediaan tinggi. Menggunakan NGINX sebagai proxy terbalik dapat meningkatkan skalabilitas dan keandalan layanan web Anda.

Panduan ini akan menunjukkan cara membuat reverse proxy di NGINX dan mencakup langkah-langkah konfigurasi yang diperlukan untuk merutekan permintaan klien ke server backend secara efisien.

Buat dan Konfigurasikan Reverse Proxy di Nginx

Menyiapkan Proxy Terbalik Dasar di Nginx

Pertama, untuk mulai mengonfigurasi Nginx sebagai proxy terbalik, akses file konfigurasi Nginx. Biasanya, file ini terletak di /etc/nginx/nginx.conf. Buka dengan editor teks pilihan Anda, seperti menggunakan sudo Nano:

sudo nano /etc/nginx/nginx.conf

Di dalam file konfigurasi, fokus pada blok http. Di sini, Anda akan memasukkan blok server, landasan pengaturan proxy terbalik Anda. Blok server mendengarkan pada port tertentu, biasanya port 80, untuk lalu lintas HTTP. Di dalam blok ini, location/directive memberitahu Nginx bagaimana menangani permintaan masuk. Gunakan direktif proxy_pass untuk mengalihkan permintaan ini ke server backend, yang ditentukan berdasarkan alamat IP atau nama hostnya.

Misalnya, konfigurasinya mungkin terlihat seperti ini:

http {
    ...
    server {
        listen 80;
        location / {
            proxy_pass http://backendserver_address;
        }
    }
}

Ingatlah untuk mengganti backendserver_address dengan alamat sebenarnya dari server backend Anda. Pengaturan sederhana ini memberitahu Nginx untuk meneruskan semua permintaan HTTP yang masuk ke server backend yang ditentukan.

Konfigurasi Proxy Terbalik Tingkat Lanjut di Nginx

Dalam penyiapan lebih lanjut, Anda mungkin ingin mengonfigurasi aspek tambahan dari proksi terbalik. Ini dapat mencakup pengaturan untuk penyeimbangan beban, penghentian SSL, atau cache.

Menerapkan Penyeimbangan Beban

Jika Anda mengoperasikan beberapa server backend, Nginx dapat mendistribusikan lalu lintas masuk di antara server tersebut, sehingga meningkatkan kinerja dan keandalan. Untuk penyeimbangan beban, Anda akan memodifikasi direktif proxy_pass untuk menunjuk ke sekelompok server yang ditentukan dalam blok upstream. Misalnya:

http {
    upstream backend_servers {
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://backend_servers;
        }
    }
}

Konfigurasi ini memungkinkan Nginx untuk menyeimbangkan beban antara backend1.example.com dan backend2.example.com.

Mengonfigurasi Penghentian SSL

Untuk penghentian SSL, pastikan blok server mendengarkan pada port 443 dan menyertakan sertifikat SSL dan lokasi file kunci. Konfigurasinya mungkin menyerupai:

server {
    listen 443 ssl;
    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://backendserver_address;
    }
}

Pengaturan ini memungkinkan Nginx menangani koneksi SSL dan mendekripsi permintaan sebelum meneruskannya ke server backend.

Menyelesaikan Perubahan

Setelah mengonfigurasi Nginx, uji konfigurasi untuk kesalahan sintaksis dengan:

nginx -t

Jika pengujian berhasil, muat ulang Nginx untuk menerapkan perubahan menggunakan:

sudo systemctl reload nginx

Langkah ini memastikan bahwa perubahan Anda diterapkan tanpa mengganggu koneksi saat ini.

Pembelajaran Tambahan: Menyiapkan Nilai Header Proxy Nginx

Saat mengonfigurasi Nginx sebagai proksi terbalik, penting untuk menyetel nilai header proksi dengan benar. Header ini sangat penting untuk menyampaikan detail permintaan klien asli ke server backend. Informasi ini dapat mencakup alamat IP klien, protokol asli permintaan, dan banyak lagi. Menyetel header ini dengan benar akan memastikan bahwa server backend memiliki konteks yang diperlukan untuk merespons permintaan dengan tepat.

Memahami Proxy Header

Header proxy sangat penting dalam pengaturan proxy terbalik karena membawa informasi tentang permintaan awal klien. Informasi ini diperlukan bagi server backend untuk membuat keputusan yang tepat mengenai penanganan permintaan masuk. Misalnya, mengetahui alamat IP asli klien dapat menjadi penting untuk tujuan logging, analitik, atau keamanan.

Konfigurasi Header Proksi Umum

Beberapa header proxy umum yang mungkin Anda konfigurasikan di Nginx meliputi:

  • X-Real-IP: Header ini digunakan untuk meneruskan alamat IP klien asli ke server backend.
  • X-Forwarded-For: Mirip dengan X-Real-IP, header ini berisi daftar semua server yang dilalui permintaan, termasuk IP klien.
  • X-Forwarded-Proto: Header ini menunjukkan protokol (HTTP atau HTTPS) yang digunakan dalam permintaan asli klien.

Menerapkan Pengaturan Proxy Header di Nginx

Untuk mengatur header ini dalam konfigurasi Nginx Anda, Anda harus mengubah blok lokasi dalam blok server Anda. Berikut ini contoh cara menyetel header ini:

server {
    listen 80;
    location / {
        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_pass http://backendserver_address;
    }
}

Dalam konfigurasi ini, $remote_addr dan $scheme adalah variabel yang Nginx otomatis isi dengan alamat IP klien dan skema permintaan (HTTP atau HTTPS).

Praktik Terbaik untuk Header Proksi

Saat mengonfigurasi header proxy, penting untuk mempertimbangkan keamanan dan keakuratan informasi yang diteruskan. Untuk mencegah potensi spoofing, pastikan server backend Anda dikonfigurasi untuk memercayai header ini hanya jika header tersebut berasal dari proxy balik Nginx Anda.

Kesimpulan

Dengan berhasil mengonfigurasi NGINX sebagai proxy terbalik, Anda dapat mengoptimalkan infrastruktur web Anda untuk kinerja, keamanan, dan skalabilitas yang lebih baik. Pantau dan sesuaikan konfigurasi Anda secara teratur untuk memastikan distribusi beban dan waktu respons yang optimal. Menerapkan proksi terbalik dengan NGINX memberikan solusi tangguh untuk mengelola permintaan klien dan menjaga ketersediaan tinggi untuk layanan web Anda.

Joshua James
Ikuti aku
Postingan terbaru oleh Joshua James (Lihat semua)

Tinggalkan komentar