All Products
Search
Document Center

Server Load Balancer:Mengambil IP klien pada server backend

Last Updated:May 29, 2026

Saat ALB meneruskan permintaan, alamat IP sumber yang terlihat oleh server backend adalah alamat IP instans ALB. ALB dapat menambahkan IP klien asli ke bidang X-Forwarded-For dalam header HTTP, yang dapat Anda ambil dengan konfigurasi sederhana pada server backend Anda.

Bidang X-Forwarded-For memiliki format berikut:

X-Forwarded-For: <IP klien asli, IP server proxy 1, IP server proxy 2, ...>

Prosedur

Langkah 1: Verifikasi konfigurasi pendengar untuk X-Forwarded-For

  1. Masuk ke Konsol ALB, lalu klik ID instans target untuk membuka halaman Instance Details.

  2. Pada tab Listener, klik ID pendengar target. Pada halaman Listener Details, di bagian Basic Information, pastikan bahwa Add HTTP Header dikonfigurasi untuk menyertakan X-Forwarded-For.

    Opsi ini diaktifkan secara default. Jika tidak diaktifkan, klik Modify Listener di bagian Basic Information dan aktifkan opsi tersebut di bagian Advanced Settings.

Langkah 2: Konfigurasikan server backend

Server Nginx

Dokumen ini menggunakan server Nginx yang menjalankan Alibaba Cloud Linux 3.2104 dan nginx/1.20.1 sebagai contoh. Konfigurasi aktual dapat berbeda tergantung lingkungan Anda.

Nginx menggunakan modul http_realip_module untuk mengurai header X-Forwarded-For dan mengambil IP klien asli.

  1. Verifikasi bahwa modul telah terinstal: Di server, jalankan perintah nginx -V 2>&1 | grep --color=auto http_realip_module. Jika output berisi --with-http_realip_module, berarti modul tersebut telah terinstal.

    image

    Untuk distribusi Linux utama, Nginx yang diinstal melalui manajer paket seperti yum atau apt biasanya sudah menyertakan modul ini secara default. Jika modul belum terinstal, kami menyarankan agar Anda menginstal atau melakukan peningkatan Nginx menggunakan manajer paket.
  2. Ubah file konfigurasi Nginx: Jalankan sudo nginx -t untuk menemukan lokasi file konfigurasi. Lokasi default biasanya /etc/nginx/nginx.conf.

    http {
        # Pastikan format log mencakup $http_x_forwarded_for untuk mencatat nilai header X-Forwarded-For.
        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';    
        # Pastikan log akses menggunakan format log di atas.             
        access_log  /var/log/nginx/access.log  main;
        #  ...
    }
  3. Muat ulang konfigurasi: Jalankan sudo nginx -t untuk memeriksa sintaksis konfigurasi. Jika sintaksis benar, jalankan sudo nginx -s reload untuk menerapkan perubahan.

Server Apache

Dokumen ini menggunakan server Apache yang menjalankan Alibaba Cloud Linux 3.2104 dan Apache/2.4.37 sebagai contoh. Konfigurasi aktual dapat berbeda tergantung lingkungan Anda.

Apache menggunakan modul mod_remoteip untuk mengurai header X-Forwarded-For dan mengambil IP klien asli.

  1. Verifikasi bahwa modul telah terinstal: Di server, jalankan perintah httpd -M | grep remoteip_module. Jika output berisi remoteip_module (shared), berarti modul tersebut telah terinstal.

    image

    Untuk distribusi Linux utama, Apache yang diinstal melalui manajer paket seperti yum atau apt biasanya sudah menyertakan modul ini secara default. Jika modul belum terinstal, kami menyarankan agar Anda menginstal atau melakukan peningkatan Apache menggunakan manajer paket.
  2. Ubah file konfigurasi Apache: Jalankan httpd -V untuk menemukan lokasi file konfigurasi. Lokasi default biasanya /etc/httpd/conf/httpd.conf.

    # ...
    <IfModule log_config_module>
    # ...
    # Pastikan format log mencakup %{X-Forwarded-For}i untuk mencatat nilai header X-Forwarded-For.
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{X-Forwarded-For}i" combined
    # ...
    # Pastikan log akses menggunakan format log di atas.
    CustomLog "logs/access_log" combined
    </IfModule>
    # ...
  3. Muat ulang konfigurasi: Jalankan sudo systemctl restart httpd untuk menerapkan perubahan.

Server IIS

Dokumen ini menggunakan server IIS yang menjalankan Windows Server 2022 21H2 dan IIS 10.0 sebagai contoh. Konfigurasi aktual dapat berbeda tergantung lingkungan Anda.

  1. Di panel Connections IIS Manager, pilih server target. Di panel utama, klik ganda Logging.

    image

  2. Di bagian Log File, klik Select Fields.

    image

  3. Pada kotak dialog W3C Logging Fields, klik Add Field. Pada kotak dialog Add Custom Field, konfigurasikan informasi bidang, lalu klik OK.

    • Field Name: Masukkan X-Forwarded-For.

    • Source Type: Biarkan nilai default, yaitu Request Header.

    • Source: Masukkan X-Forwarded-For.

    image

  4. Pastikan bidang kustom telah ditambahkan, lalu klik OK.

    image

  5. Di panel Actions di sebelah kanan, klik Apply untuk menyimpan perubahan.

    image

Langkah 3: Verifikasi pengambilan IP klien

Periksa log akses server web backend untuk memverifikasi bahwa server telah berhasil mengambil IP klien asli.

Server Nginx

Lokasi default log akses Nginx adalah /var/log/nginx/access.log.

Pada setiap entri log, nilai variabel $http_x_forwarded_for adalah IP klien asli.

image

Server Apache

Lokasi default log akses Apache adalah /var/log/httpd/access_log.

Pada setiap entri log, nilai variabel %{X-Forwarded-For}i adalah IP klien asli.

image

Server IIS

Lokasi default log akses IIS adalah %SystemDrive%\inetpub\logs\LogFiles.

Pada setiap entri log, nilai pada bidang X-Forwarded-For terakhir adalah IP klien asli.

image

Praktik terbaik produksi

  • Validasi dan filter header X-Forwarded-For: Di server backend Anda, validasi dan filter header X-Forwarded-For. Tolak entri yang diformat secara tidak tepat atau berisi alamat IP yang tidak tepercaya.

  • Gunakan kebijakan keamanan: Gunakan grup keamanan atau kebijakan keamanan pihak ketiga lainnya antara ALB dan server backend Anda untuk membatasi dan memfilter permintaan serangan yang memalsukan header X-Forwarded-For.

  • Enkripsi TLS: Gunakan enkripsi TLS untuk melindungi komunikasi antar komponen, termasuk transmisi header X-Forwarded-For. Hal ini mengurangi risiko serangan man-in-the-middle dan manipulasi data.

FAQ

Akses sering dari IP yang dimulai dengan 100

  • Instans ALB yang ditingkatkan menggunakan alamat IP pribadi (IP lokal) dari blok CIDR vSwitch terkait untuk berkomunikasi dengan server backend.

  • Instans ALB yang tidak ditingkatkan menggunakan rentang alamat 100.64.0.0/10, yang dicadangkan oleh Alibaba Cloud dan tidak menimbulkan risiko keamanan, untuk berkomunikasi dengan server backend.

Selain meneruskan permintaan ke server backend, ALB juga melakukan pemeriksaan kesehatan secara terus-menerus terhadap server tersebut. Jika Anda menggunakan instans ALB yang tidak ditingkatkan, log akses server backend Anda akan menunjukkan banyak permintaan dari alamat IP dalam rentang 100.64.0.0/10.

Untuk memastikan konektivitas yang tepat antara instans ALB dan layanan backend Anda, pastikan iptables atau perangkat lunak keamanan pihak ketiga lainnya pada instans ECS backend Anda tidak memblokir blok CIDR vSwitch instans ALB atau rentang alamat 100.64.0.0/10.

Mengambil IP klien dengan WAF, CDN, atau GA

Jika trafik diteruskan oleh layanan seperti Web Application Firewall (WAF), Content Delivery Network (CDN), atau Global Accelerator (GA) sebelum mencapai ALB, Anda juga dapat mengambil IP klien asli dari bidang X-Forwarded-For. Produk-produk ini meneruskan header ini secara default dan tidak memerlukan konfigurasi tambahan.

Untuk mencegah pemalsuan X-Forwarded-For, Anda dapat menggunakan header HTTP lain untuk mencatat IP klien asli:

  • Gunakan header Ali-Cdn-Real-Ip dari Alibaba Cloud CDN. Arsitekturnya adalah Klien > CDN > WAF > ALB > ECS.

    1. Secara default, CDN menambahkan header permintaan Ali-Cdn-Real-Ip ke permintaan yang diteruskan ke server origin. Header ini meneruskan alamat IP asli klien yang terhubung ke Titik kehadiran (POP) CDN.

    2. Saat mengintegrasikan dengan WAF, pilih Ali-Cdn-Real-Ip sebagai header kustom untuk deteksi IP klien.

    3. Konfigurasikan variabel log $http_Ali_Cdn_Real_Ip pada server Nginx backend untuk mengambil IP klien asli dari bidang ini.

  • Gunakan aksi Add Header dalam aturan pengalihan pendengar ALB untuk menambahkan header HTTP (pasangan kunci-nilai) ke permintaan. Arsitekturnya adalah Klien > GA > ALB > ECS.

    1. Pada aturan pengalihan pendengar ALB, atur Action ke Add Header. Dalam contoh ini, kuncinya adalah client-real-ip dan nilainya diatur ke System-defined - Client IP Address.

      Tulis ke Header

    2. Untuk pendengar tersebut, aktifkan Retrieve Client IP dan tambahkan alamat IP egress publik titik akhir GA ke daftar alamat IP tepercaya.

    3. Konfigurasikan variabel log $http_client_real_ip pada server Nginx backend untuk mengambil IP klien asli dari bidang ini.

Mengambil IP klien di lingkungan ACK

Untuk informasi lebih lanjut, lihat Konfigurasikan instans ALB menggunakan AlbConfig.