全部产品
Search
文档中心

Server Load Balancer:Mendapatkan alamat IP asal klien pada server backend melalui Application Load Balancer

更新时间:Jan 08, 2026

Saat Application Load Balancer (ALB) meneruskan permintaan, alamat IP sumber yang terlihat oleh server backend adalah alamat IP instans ALB. ALB dapat menambahkan alamat IP asal klien ke bidang X-Forwarded-For dalam header permintaan HTTP. Server backend kemudian dapat mengambil alamat IP tersebut dengan konfigurasi sederhana.

Bidang X-Forwarded-For menggunakan format berikut:

X-Forwarded-For: <Client Originating IP Address, Proxy Server 1 IP, Proxy Server 2 IP, ...>

Prosedur

Langkah 1: Konfirmasi bahwa pendengar diaktifkan untuk mendapatkan alamat IP klien menggunakan header X-Forwarded-For

  1. Masuk ke Konsol ALB dan 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 diatur ke Enable adding the X-Forwarded-For header to retrieve client IP addresses - Add.

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

Langkah 2: Konfigurasikan server backend

Server Nginx

Bagian ini menggunakan contoh Alibaba Cloud Linux 3.2104 dan nginx/1.20.1. Perintah dan jalur aktual dapat berbeda tergantung lingkungan Anda.

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

  1. Konfirmasi bahwa modul telah terinstal: Jalankan nginx -V 2>&1 | grep --color=auto http_realip_module di server. Jika output berisi --with-http_realip_module, berarti modul telah terinstal.

    image

    Nginx yang diinstal menggunakan manajer paket, seperti yum atau `apt`, pada distribusi Linux utama biasanya sudah menyertakan modul ini secara default. Jika modul belum terinstal, instal atau upgrade Nginx menggunakan manajer paket.
  2. Ubah file konfigurasi Nginx: Jalankan sudo nginx -t untuk menemukan jalur file konfigurasi. Jalur default biasanya /etc/nginx/nginx.conf.

    http {
        # Pastikan format log mencakup $http_x_forwarded_for. Variabel ini 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 file konfigurasi. Jika sintaksis benar, jalankan sudo nginx -s reload untuk menerapkan perubahan.

Server Apache

Bagian ini menggunakan contoh Alibaba Cloud Linux 3.2104 dan Apache/2.4.37. Perintah dan jalur aktual dapat berbeda tergantung lingkungan Anda.

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

  1. Konfirmasi bahwa modul telah terinstal: Jalankan httpd -M | grep remoteip_module di server. Jika output berisi remoteip_module (shared), berarti modul telah terinstal.

    image

    Apache yang diinstal menggunakan manajer paket, seperti yum atau `apt`, pada distribusi Linux utama biasanya sudah menyertakan modul ini secara default. Jika modul belum terinstal, instal atau upgrade Apache menggunakan manajer paket.
  2. Ubah file konfigurasi Apache: Jalankan httpd -V untuk menemukan jalur file konfigurasi. Jalur default biasanya /etc/httpd/conf/httpd.conf.

    # ...
    <IfModule log_config_module>
    # ...
    # Pastikan format log mencakup %{X-Forwarded-For}i. Variabel ini 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

Bagian ini menggunakan contoh Windows Server 2022 21H2 dan IIS 10.0. Langkah-langkah aktual dapat berbeda tergantung lingkungan Anda.

  1. Di IIS Manager, pilih server target di panel Connections di sebelah kiri. Lalu, di panel utama, klik ganda fitur Logging.

    image

  2. Pada 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.

    • Untuk Field Name, masukkan X-Forwarded-For.

    • Source Type: Nilai default adalah Request Header.

    • Untuk Source, masukkan X-Forwarded-For.

    image

  4. Konfirmasi bahwa bidang kustom telah ditambahkan, lalu klik OK.

    image

  5. Di panel Actions di sebelah kanan, klik Apply.

    image

Langkah 3: Verifikasi bahwa server backend mendapatkan alamat IP asal klien

Periksa log akses server web backend untuk memverifikasi bahwa server tersebut mengambil alamat IP asal klien.

Server Nginx

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

Pada setiap catatan log, bidang yang sesuai dengan variabel $http_x_forwarded_for adalah alamat IP asal klien.

image

Server Apache

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

Pada setiap catatan log, bidang yang sesuai dengan variabel %{X-Forwarded-For}i adalah alamat IP asal klien.

image

Server IIS

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

Pada setiap catatan log, nilai yang sesuai dengan bidang X-Forwarded-For di akhir catatan adalah alamat IP asal klien.

image

Going live

  • Validasi dan filter header X-Forwarded-For: Di server backend, validasi dan filter header X-Forwarded-For untuk memastikan bahwa header tersebut sah dan tepercaya. Anda dapat memeriksa format dan alamat IP dalam header X-Forwarded-For serta menolak nilai ilegal atau mencurigakan.

  • Gunakan kebijakan keamanan: Gunakan grup keamanan Alibaba Cloud atau kebijakan keamanan pihak ketiga lainnya antara instans ALB dan server backend untuk membatasi dan memfilter permintaan berbahaya yang menargetkan header X-Forwarded-For.

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

FAQ

Mengapa alamat IP yang dimulai dengan 100 sering mengakses layanan backend?

  • Instans ALB yang ditingkatkan: menggunakan alamat IP pribadi (Local IP) dari blok CIDR vSwitch-nya untuk berkomunikasi dengan server backend.

  • Instans ALB lama: menggunakan rentang alamat 100.64.0.0/10 untuk berkomunikasi dengan server backend. Ini adalah blok CIDR yang dicadangkan oleh Alibaba Cloud dan tidak menimbulkan risiko keamanan.

Selain meneruskan permintaan ke server backend, ALB juga melakukan pemeriksaan kesehatan pada server backend. Jika Anda menggunakan instans ALB lama, Anda akan melihat banyak permintaan akses dari alamat IP yang dimulai dengan 100 di log akses server backend.

Untuk memastikan komunikasi normal antara instans ALB dan layanan backend, jika kebijakan keamanan—seperti grup keamanan Alibaba Cloud atau kebijakan keamanan pihak ketiga lainnya—dikonfigurasi untuk jalur akses, Anda harus mengizinkan trafik dari blok CIDR vSwitch instans ALB atau rentang alamat 100.64.0.0/10.

Bagaimana cara mendapatkan alamat IP asal klien saat ALB digunakan bersama WAF, CDN, atau GA?

Jika trafik diteruskan oleh WAF, CDN, atau Global Accelerator (GA) Alibaba Cloud sebelum mencapai instans ALB, Anda juga dapat mengambil alamat IP asal klien dari bidang X-Forwarded-For. Produk-produk ini meneruskan bidang ini secara default dan tidak memerlukan konfigurasi tambahan.

Untuk mencegah spoofing X-Forwarded-For, Anda juga dapat menggunakan bidang header permintaan HTTP lainnya untuk mencatat alamat IP asal klien:

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

    1. Secara default, CDN menambahkan header permintaan Ali-Cdn-Real-Ip ke permintaan pengambilan asal untuk meneruskan alamat IP asli klien ke server origin.

    2. Saat Anda menambahkan layanan ke WAF, atur metode deteksi alamat IP klien untuk menggunakan header yang ditentukan Ali-Cdn-Real-Ip.

    3. Konfigurasikan variabel log di server Nginx backend sebagai $http_Ali_Cdn_Real_Ip. Anda kemudian dapat mengambil alamat IP asal klien dari bidang ini.

  • Anda dapat menggunakan aksi Add Header dalam aturan pengalihan pendengar ALB untuk menambahkan header HTTP kustom. Alur permintaan untuk aksi ini adalah Client > GA > ALB > ECS.

    1. Dalam aturan pengalihan pendengar ALB, atur Action ke Add Header. Dalam contoh ini, header ditambahkan dengan kunci client-real-ip dan nilainya diatur ke System-defined variable Client IP Address.

      Menulis ke Header

    2. Aktifkan Retrieve Client IP pada pendengar dan tambahkan alamat IP publik titik akhir ke Trusted IP List.

    3. Konfigurasikan variabel log di server Nginx backend sebagai $http_client_real_ip. Anda kemudian dapat mengambil alamat IP asal klien dari bidang ini.

Bagaimana cara mendapatkan alamat IP asal klien saat ALB digunakan dalam skenario ACK?

Untuk informasi lebih lanjut, lihat Obtain the IP address of a visitor.