All Products
Search
Document Center

Server Load Balancer:Mengambil alamat IP klien dengan pendengar Lapisan 7 CLB

Last Updated:May 29, 2026

Saat menggunakan pendengar Lapisan 7 Classic Load Balancer (CLB) untuk meneruskan lalu lintas, Anda dapat mengambil alamat IP klien dari field X-Forwarded-For dalam Header HTTP.

Cara kerja

Load balancing lapisan 7 (untuk HTTP atau HTTPS) menggunakan field X-Forwarded-For dalam Header HTTP untuk mempertahankan alamat IP klien. Setelah server backend dikonfigurasi, server tersebut dapat mengambil alamat IP ini.

Field X-Forwarded-For memiliki format berikut:

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

Dengan metode ini, alamat IP paling kiri dalam daftar merupakan alamat IP klien.

Catatan

CLB menangani enkripsi HTTPS dan berkomunikasi dengan server backend melalui HTTP. Oleh karena itu, Anda hanya perlu mengonfigurasi server backend untuk HTTP, meskipun menggunakan pendengar HTTPS.

Prosedur

Prasyarat

  • Anda telah membuat instans CLB dan menambahkan pendengar Lapisan 7 ke dalamnya. Topik ini menggunakan pendengar HTTP pada port 80 sebagai contoh. Untuk informasi selengkapnya, lihat Buat dan kelola instans CLB dan Tambahkan pendengar HTTP.

  • Anda telah membuat kelompok server untuk instans CLB dan menambahkan server backend. Topik ini menggunakan kelompok vServer dengan protokol HTTP, instans ECS sebagai server backend, dan port 80 sebagai port aplikasi sebagai contoh. Untuk informasi selengkapnya, lihat Buat dan kelola kelompok vServer.

Langkah 1: Verifikasi bahwa pendengar menggunakan X-Forwarded-For

  1. Masuk ke Konsol Classic Load Balancer (CLB).

  2. Pada bilah navigasi atas, pilih wilayah tempat instans ditempatkan.

  3. Pada halaman Instances, temukan instans yang dituju dan klik ID-nya.

  4. Pada halaman Instance Details, klik tab Listener, temukan pendengar Lapisan 7 yang dituju, lalu klik ID-nya.

  5. Pada halaman detail pendengar, verifikasi bahwa bagian Custom HTTP Header mencakup X-Forwarded-For: Retrieve Client IP.

    Catatan

    Secara default, pendengar Lapisan 7 CLB menggunakan header X-Forwarded-For untuk mengambil alamat IP klien. Fitur ini tidak dapat dinonaktifkan.

Langkah 2: Konfigurasikan server backend

Ikuti langkah-langkah berikut sesuai jenis server Anda.

Server Nginx

Bagian ini menggunakan CentOS 7.9 dan Nginx 1.20.1 sebagai contoh. Konfigurasi aktual dapat berbeda tergantung lingkungan Anda.

  1. Jalankan perintah nginx -V | grep http_realip_module untuk memeriksa apakah modul http_realip_module telah diinstal pada server Nginx. Nginx menggunakan modul ini untuk mengurai catatan X-Forwarded-For.

    Modul tersebut telah diinstal jika output mencakup --with-http_realip_module. Jika demikian, Anda dapat melanjutkan ke langkah berikutnya.

    Contoh output jika modul http_realip_module telah diinstal

    nginx version: nginx/1.20.1
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
    built with OpenSSL 1.1.1k  FIPS 25 Mar 2021
    TLS SNI support enabled
    configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-compat --with-debug --with-file-aio --with-google_perftools_module --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_mp4_module --with-http_perl_module=dynamic --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E'
    
    Catatan
    • Modul http_realip_module telah didukung sejak Nginx 1.0.4 (rilis tahun 2011). Jika Anda menggunakan versi yang lebih lama, kami menyarankan agar Anda melakukan backup data konfigurasi dan meningkatkan versi Nginx.

    • Jika modul http_realip_module belum diinstal, Anda perlu mengompilasi ulang dan menginstal Nginx dengan modul tersebut. Proses ini kompleks. Kami menyarankan menggunakan manajer paket seperti yum untuk menginstal Nginx.

  2. Ubah dan simpan file konfigurasi Nginx seperti pada contoh berikut. Untuk menemukan lokasi file konfigurasi, jalankan perintah nginx -t. Lokasi default biasanya /etc/nginx/nginx.conf, tetapi dapat berbeda tergantung lingkungan Anda.

    http {
      # Pastikan log_format mencakup $http_x_forwarded_for. Variabel ini mencatat nilai 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"';
      
      # ...
    }
    
  3. Jalankan perintah sudo nginx -s reload untuk memuat ulang konfigurasi Nginx.

Server Apache

Bagian ini menggunakan CentOS 7.9 dan Apache 2.4.6 sebagai contoh. Konfigurasi aktual dapat berbeda tergantung lingkungan Anda.

  1. Jalankan perintah httpd -M | grep remoteip_module untuk memeriksa apakah modul remoteip_module telah diinstal pada server Apache. Apache menggunakan modul ini untuk mengurai header X-Forwarded-For.

    Jika output mencakup remoteip_module (shared), berarti modul tersebut telah diinstal. Anda dapat melanjutkan ke langkah berikutnya.

    Catatan
    • Modul remoteip_module telah didukung sejak Apache 2.4.0 (rilis tahun 2012). Jika Anda menggunakan versi yang lebih lama, kami menyarankan agar Anda melakukan backup data konfigurasi dan meningkatkan versi Apache.

    • Jika modul remoteip_module belum diinstal, Anda perlu mengompilasi ulang dan menginstal Apache dengan modul tersebut. Proses ini kompleks. Kami menyarankan menggunakan manajer paket seperti yum untuk menginstal Apache.

  2. Ubah dan simpan file konfigurasi Apache seperti pada contoh berikut. Lokasi default biasanya /etc/httpd/conf/httpd.conf, tetapi dapat berbeda tergantung lingkungan Anda.

    # ...
    <IfModule log_config_module>
    	# Tambahkan %{X-Forwarded-For}i untuk mencatat informasi X-Forwarded-For.
      LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
      LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b" common
    	#...
    </IfModule>
    # ...
  3. Jalankan perintah sudo systemctl restart httpd untuk merestart layanan Apache.

Server IIS

Bagian ini menggunakan Windows Server 2016 sebagai contoh. Konfigurasi aktual dapat berbeda tergantung lingkungan Anda.

  1. Unduh dan ekstrak file F5XForwardedFor.

  2. Bergantung pada sistem operasi server Anda, salin F5XFFHttpModule.dll dan F5XFFHttpModule.ini dari direktori x86\ atau x64\ ke direktori baru, pastikan proses IIS memiliki izin baca terhadap direktori tersebut.

  3. Pada Server Manager, buka IIS Manager.

  4. Pilih server dan klik ganda Modules.

  5. Klik Configure Native Modules, lalu klik Register.

  6. Tambahkan file .dll yang telah diunduh.

    1. Masukkan nama file, pilih lokasi, lalu klik OK.

    2. Sistem secara otomatis memilih modul yang baru didaftarkan. Klik OK.注册模块

  7. Kembali ke halaman utama server dan klik ganda modul Logging. Konfigurasikan format log untuk mencatat field X-Forwarded-For.

    1. Klik Select Fields.

      image.png

    2. Di pojok kiri bawah, klik Add Field, tambahkan field log, lalu klik OK.

      image.png

    3. Di pojok kanan atas, klik Apply untuk menyimpan perubahan.

  8. Restart server IIS agar konfigurasi berlaku.

Langkah 3: Verifikasi pengambilan IP klien

Ikuti langkah-langkah berikut sesuai jenis server Anda.

Server Nginx

Saat Nginx digunakan sebagai server backend, periksa log akses Nginx untuk memverifikasi bahwa alamat IP klien berhasil diambil.

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

Pada setiap entri log, alamat IP paling kiri dalam field variabel $http_x_forwarded_for adalah alamat IP klien.

image.png

Server Apache

Saat Apache digunakan sebagai server backend, periksa log akses Apache untuk memverifikasi bahwa alamat IP klien berhasil diambil.

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

Pada setiap entri log, alamat IP paling kiri dalam field %{X-Forwarded-For}i adalah alamat IP klien.

image.png

Server IIS

Saat IIS digunakan sebagai server backend, periksa log IIS untuk memverifikasi bahwa alamat IP klien berhasil diambil.

Anda dapat menemukan lokasi file log IIS di modul Logging.

image.png

Pada setiap entri log, alamat IP paling kiri dalam field X-Forwarded-For adalah alamat IP klien.

image.png

FAQ

Akses sering dari IP yang dimulai dengan 100

Selain meneruskan permintaan eksternal ke instans ECS backend menggunakan Alamat IP pribadi, sistem load balancing juga melakukan pemeriksaan kesehatan dan memantau ketersediaan. Permintaan ini berasal dari sistem load balancing.

Blok CIDR sistem untuk layanan load balancing adalah 100.64.0.0/10. Ini adalah blok alamat yang dicadangkan untuk Alibaba Cloud dan tidak dapat dialokasikan kepada pengguna lain, sehingga tidak menimbulkan risiko keamanan. Inilah sebabnya Anda mungkin melihat banyak permintaan akses ke instans ECS Anda dari alamat IP yang dimulai dengan 100.

Untuk memastikan ketersediaan layanan Anda, pastikan iptables atau perangkat lunak keamanan pihak ketiga lainnya di semua server tidak memblokir blok alamat ini.

Mendapatkan IP klien dengan WAF, CDN, dan GA

Jika lalu lintas diteruskan oleh layanan seperti Web Application Firewall (WAF), Content Delivery Network (CDN), atau Global Accelerator (GA) sebelum mencapai load balancer, Anda tetap dapat menggunakan field X-Forwarded-For untuk mengambil alamat IP klien. Produk-produk ini meneruskan field X-Forwarded-For secara default, sehingga tidak diperlukan konfigurasi tambahan.

Untuk keamanan yang lebih tinggi dan mencegah spoofing X-Forwarded-For, Anda dapat menentukan header kustom di produk lain untuk mencatat alamat IP klien. Misalnya, dalam arsitektur client > CDN > WAF > load balancer > ECS, CDN dapat meneruskan header HTTP Ali-Cdn-Real-Ip. Saat mengonfigurasi WAF, Anda dapat memilih 'Specify header field' sebagai metode penentuan alamat IP klien dan mengatur headernya menjadi Ali-Cdn-Real-Ip. Pada server Nginx backend, Anda kemudian dapat mengonfigurasi variabel log Anda sebagai $http_Ali_Cdn_Real_Ip untuk menangkap alamat IP klien dalam log.

Anda juga dapat menerapkan langkah-langkah berikut untuk meningkatkan keamanan sistem:

  • Validasi dan filter header XFF: Di server backend, validasi dan filter header XFF untuk memastikan header tersebut sah dan dapat dipercaya. Anda dapat memeriksa format dan alamat IP dalam header serta menolak nilai yang tidak valid atau mencurigakan.

  • Gunakan firewall dan daftar kontrol akses (ACL): Antara load balancer dan server backend, gunakan firewall dan daftar kontrol akses (ACL) untuk membatasi dan memfilter Permintaan Serangan yang menargetkan header XFF.

  • Enkripsi SSL/TLS: Gunakan enkripsi SSL/TLS untuk melindungi komunikasi, termasuk transmisi header XFF. Hal ini mengurangi risiko serangan man-in-the-middle dan perubahan data.

Mendapatkan IP klien di lingkungan ACK

Saat Anda menggunakan load balancer dalam kluster Container Service for Kubernetes (ACK), metodenya sama, tetapi beberapa detail operasional berbeda. Untuk informasi selengkapnya, lihat FAQ manajemen jaringan.

Dokumen terkait

Jenis load balancer yang berbeda menggunakan metode berbeda untuk mengambil alamat IP klien:

  • Jika Anda menggunakan Application Load Balancer (ALB), Anda dapat menggunakan field X-Forwarded-For untuk mengambil alamat IP klien. Untuk informasi selengkapnya, lihat Mengambil alamat IP klien dengan ALB.

  • Jika Anda menggunakan Network Load Balancer (NLB), Anda dapat mempertahankan alamat IP klien dengan menggunakan kelompok server atau dengan mengaktifkan protokol Proxy. Untuk informasi selengkapnya, lihat Mengambil alamat IP klien dengan NLB.

  • Jika Anda menggunakan pendengar Lapisan 4 CLB, Anda dapat mengambil alamat IP klien secara langsung atau dengan mengaktifkan protokol Proxy. Untuk informasi selengkapnya, lihat Mengambil alamat IP klien dengan pendengar Lapisan 4 CLB.