Tüm Ürünler
Search
Belge Merkezi

Server Load Balancer:Retrieve the client IP on a backend server

Son Güncelleme:Oct 02, 2026

ALB istekleri iletirken arka uç sunucunun gördüğü kaynak IP adresi, ALB örneğinin IP adresidir. ALB, gerçek istemci IP'sini HTTP başlığındaki X-Forwarded-For alanına ekleyebilir; bu bilgiyi arka uç sunucunuzda basit bir yapılandırma ile alabilirsiniz.

X-Forwarded-For alanının biçimi aşağıdaki gibidir:

X-Forwarded-For: <real client IP, proxy server 1-IP, proxy server 2-IP, ...>

Yordam

Adım 1: Dinleyici yapılandırmasında X-Forwarded-For doğrulaması yapın**

  1. ALB konsolu oturumunu açın ve hedef örnek kimliğine tıklayarak Instance Details sayfasına gidin.

  2. Listener sekmesinde hedef dinleyicinin kimliğine tıklayın. Listener Details sayfasında Basic Information bölümünde Add HTTP Header seçeneğinin X-Forwarded-For içerecek şekilde yapılandırıldığını doğrulayın.

    Bu seçenek varsayılan olarak etkindir. Etkin değilse Basic Information bölümündeki Modify Listener seçeneğine tıklayın ve Advanced Settings bölümünden etkinleştirin.

Adım 2: Arka uç sunucusunu yapılandırın

  • Bu konuda, arka uç sunucunuzun erişim günlüğünde gerçek istemci IP'sinin nasıl kaydedileceği (X-Forwarded-For alanı aracılığıyla) açıklanır. Sunucu bağlantı katmanı değişkenleri (Nginx'te $remote_addr ve Apache'de %h gibi) ALB yönlendirme IP'sine (yerel IP) ayarlı kalır ve etkilenmez.

  • Bağlantı katmanı değişkenlerini doğrudan gerçek istemci IP'si ile değiştirmek istiyorsanız (böylece mevcut günlük tutma, erişim kontrolü ve diğer kurallar değiştirilmeden çalışır) bkz. Nginx veya Apache'nin gerçek istemci IP'sini doğrudan almasını sağlama (bağlantı katmanı adresinin değiştirilmesi).

Nginx sunucusu

Bu konuda Alibaba Cloud Linux 3.2104 ve nginx/1.20.1 sürümlerini çalıştıran bir Nginx sunucusu örnek olarak kullanılmıştır. Gerçek yapılandırma ortamınıza bağlı olarak değişiklik gösterebilir.

Nginx, http_realip_module modülünü kullanarak X-Forwarded-For başlığını ayrıştırır ve gerçek istemci IP'sini alır.

  1. Modülün yüklü olduğunu doğrulayın: Sunucuda nginx -V 2>&1 | grep --color=auto http_realip_module komutunu çalıştırın. Çıktıda --with-http_realip_module ifadesi varsa modül yüklüdür.

    image

    Yaygın Linux dağıtımlarında yum veya apt gibi bir paket yöneticisi aracılığıyla yüklenen Nginx genellikle bu modülü varsayılan olarak içerir. Modül yüklü değilse Nginx'i bir paket yöneticisi kullanarak yüklemeniz veya yükseltmeniz önerilir.
  2. Nginx yapılandırma dosyasını değiştirin: Yapılandırma dosyasının yolunu bulmak için sudo nginx -t komutunu çalıştırın. Varsayılan yol genellikle /etc/nginx/nginx.conf olur.

    http {
        # Ensure the log format includes $http_x_forwarded_for to record the value of the X-Forwarded-For header.
        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';    
        # Ensure the access log uses the preceding log format.             
        access_log  /var/log/nginx/access.log  main;
        #  ...
    }
  3. Yapılandırmayı yeniden yükleyin: Yapılandırma sözdizimini denetlemek için sudo nginx -t komutunu çalıştırın. Sözdizimi doğruysa değişiklikleri uygulamak üzere sudo nginx -s reload komutunu çalıştırın.

Apache sunucusu

Bu konuda Alibaba Cloud Linux 3.2104 ve Apache/2.4.37 sürümlerini çalıştıran bir Apache sunucusu örnek olarak kullanılmıştır. Gerçek yapılandırma ortamınıza bağlı olarak değişiklik gösterebilir.

Apache, mod_remoteip modülünü kullanarak X-Forwarded-For başlığını ayrıştırır ve gerçek istemci IP'sini alır.

  1. Modülün yüklü olduğunu doğrulayın: Sunucuda httpd -M | grep remoteip_module komutunu çalıştırın. Çıktıda remoteip_module (shared) ifadesi varsa modül yüklüdür.

    image

    Yaygın Linux dağıtımlarında yum veya apt gibi bir paket yöneticisi aracılığıyla yüklenen Apache genellikle bu modülü varsayılan olarak içerir. Modül yüklü değilse Apache'yi bir paket yöneticisi kullanarak yüklemeniz veya yükseltmeniz önerilir.
  2. Apache yapılandırma dosyasını değiştirin: Yapılandırma dosyasının yolunu bulmak için httpd -V komutunu çalıştırın. Varsayılan yol genellikle /etc/httpd/conf/httpd.conf olur.

    # ...
    <IfModule log_config_module>
    # ...
    # Ensure the log format includes %{X-Forwarded-For}i to record the value of the X-Forwarded-For header.
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{X-Forwarded-For}i" combined
    # ...
    # Ensure the access log uses the preceding log format.
    CustomLog "logs/access_log" combined
    </IfModule>
    # ...
  3. Yapılandırmayı yeniden yükleyin: Değişiklikleri uygulamak için sudo systemctl restart httpd komutunu çalıştırın.

IIS sunucusu

Bu konuda Windows Server 2022 21H2 ve IIS 10.0 sürümlerini çalıştıran bir IIS sunucusu örnek olarak kullanılmıştır. Gerçek yapılandırma ortamınıza bağlı olarak değişiklik gösterebilir.

  1. IIS Yöneticisi'nin Connections bölmesinde hedef sunucuyu seçin. Ana bölmede Logging öğesine çift tıklayın.

    image

  2. Log File bölümünde Select Fields seçeneğine tıklayın.

    image

  3. W3C Logging Fields iletişim kutusunda Add Field seçeneğine tıklayın. Add Custom Field iletişim kutusunda alan bilgilerini yapılandırın ve OK seçeneğine tıklayın.

    • Field Name: X-Forwarded-For girin.

    • Source Type: Varsayılan değeri olan Request Header değerini koruyun.

    • Source: X-Forwarded-For girin.

    image

  4. Özel alanın eklendiğini onaylayın ve OK seçeneğine tıklayın.

    image

  5. Sağ taraftaki Actions bölmesinde değişiklikleri kaydetmek için Apply seçeneğine tıklayın.

    image

Adım 3: İstemci IP'sinin alındığını doğrulayın

Gerçek istemci IP'sinin alındığını doğrulamak için arka uç web sunucusunun erişim günlüğünü denetleyin.

Nginx sunucusu

Nginx erişim günlüğünün varsayılan yolu /var/log/nginx/access.log konumudur.

Her günlük girdisinde $http_x_forwarded_for değişkeninin değeri gerçek istemci IP'sidir.

image

Apache sunucusu

Apache erişim günlüğünün varsayılan yolu /var/log/httpd/access_log konumudur.

Her günlük girdisinde %{X-Forwarded-For}i değişkeninin değeri gerçek istemci IP'sidir.

image

IIS sunucusu

IIS erişim günlüğünün varsayılan yolu %SystemDrive%\inetpub\logs\LogFiles konumudur.

Her günlük girdisinde son X-Forwarded-For alanındaki değer gerçek istemci IP'sidir.

image

Üretim en iyi uygulamaları

  • X-Forwarded-For başlığını doğrulayın ve filtreleyin: Arka uç sunucunuzda X-Forwarded-For başlığını doğrulayın ve filtreleyin. Hatalı biçimlendirilmiş veya güvenilmeyen IP adresleri içeren girdileri reddedin.

  • Güvenlik ilkelerini kullanın: ALB ile arka uç sunucularınız arasında güvenlik grupları veya diğer üçüncü taraf güvenlik ilkelerini kullanarak sahte X-Forwarded-For başlığı içeren kötü amaçlı istekleri kısıtlayın ve filtreleyin.

  • TLS şifrelemesi: Bileşenler arasındaki iletişimi korumak ve X-Forwarded-For başlığının iletimi sırasında araya girme saldırıları ile veri kurcalama riskini azaltmak için TLS şifrelemesi kullanın.

SSS

100 ile başlayan IP'lerden sık erişim

  • Yükseltilmiş ALB örnekleri arka uç sunucularıyla iletişim kurmak için ilişkili vSwitch CIDR bloklarından özel IP adresleri (yerel IP'ler) kullanır.

  • Yükseltilmemiş ALB örnekleri arka uç sunucularıyla iletişim kurmak için Alibaba Cloud tarafından ayrılmış ve herhangi bir güvenlik riski oluşturmayan 100.64.0.0/10 adres aralığını kullanır.

ALB, istekleri arka uç sunucularına iletmenin yanı sıra sürekli durum denetimleri de gerçekleştirir. Yükseltilmemiş bir ALB örneği kullanıyorsanız arka uç sunucusu erişim günlüklerinizde 100.64.0.0/10 aralığındaki IP adreslerinden gelen çok sayıda istek görürsünüz.

ALB örneğiniz ile arka uç hizmetleri arasında düzgün bağlantı sağlamak için arka uç ECS örneklerinizdeki iptables veya diğer üçüncü taraf güvenlik yazılımlarının ALB örneğinin vSwitch CIDR bloğunu veya 100.64.0.0/10 adres aralığını engellemediğinden emin olun.

WAF, CDN veya GA ile istemci IP'sini alma

Trafik ALB'ye ulaşmadan önce Web Application Firewall (WAF), Content Delivery Network (CDN) veya Global Accelerator (GA) gibi hizmetler tarafından yönlendiriliyorsa gerçek istemci IP'sini X-Forwarded-For alanından da alabilirsiniz. Bu ürünler varsayılan olarak bu başlığı iletir ve ek yapılandırma gerektirmez.

X-Forwarded-For sahteciliğini önlemek için gerçek istemci IP'sini kaydetmek amacıyla diğer HTTP başlıklarını kullanabilirsiniz:

  • Alibaba Cloud CDN'den gelen Ali-Cdn-Real-Ip başlığını kullanın. Mimari Client > CDN > WAF > ALB > ECS şeklindedir.

    1. Varsayılan olarak CDN, kök sunucuya iletilen isteklere Ali-Cdn-Real-Ip istek başlığını ekler. Bu başlık, CDN noktasına (POP) bağlanan istemcinin gerçek IP adresini iletir.

    2. WAF ile entegrasyon yaparken istemci IP'si algılama için özel başlık olarak Ali-Cdn-Real-Ip seçin.

    3. Bu alandan gerçek istemci IP'sini almak için arka uç Nginx sunucusunda $http_Ali_Cdn_Real_Ip günlük değişkenini yapılandırın.

  • Bir ALB dinleyicisinin yönlendirme kuralında Insert Header eylemini kullanarak isteğe bir HTTP başlığı (anahtar-değer çifti) ekleyin. Mimari Client > GA > ALB > ECS şeklindedir.

    1. ALB dinleyici yönlendirme kuralında Action değerini Insert Header olarak ayarlayın. Bu örnekte anahtar client-real-ip ve değer System-defined - Client IP Address olarak ayarlanır.

    2. Dinleyici için Retrieve Client IP seçeneğini etkinleştirin ve güvenilir IP adresi listesine GA uç noktasının genel çıkış IP adreslerini ekleyin.

    3. Bu alandan gerçek istemci IP'sini almak için arka uç Nginx sunucusunda $http_client_real_ip günlük değişkenini yapılandırın.

ACK ortamında istemci IP'sini alma

Daha fazla bilgi için bkz. AlbConfig kullanarak ALB örneklerini yapılandırma.

Nginx veya Apache'nin gerçek istemci IP'sini doğrudan almasını sağlama (bağlantı katmanı adresinin değiştirilmesi)

Nginx

Varsayılan olarak Nginx günlüklerindeki $remote_addr ALB yönlendirme IP'sini (yerel IP) kaydeder. Mevcut günlük tutma ve erişim kontrolü kurallarının değiştirilmeden çalışması için bunu gerçek istemci IP'si ile değiştirmek üzere ngx_http_realip_module modülünü kullanın:

  1. Modülün yüklü olduğunu doğrulamak için nginx -V | grep http_realip_module komutunu çalıştırın.

  2. Yapılandırma dosyasında (varsayılan: /etc/nginx/nginx.conf) http bloğuna aşağıdakileri ekleyin:

    set_real_ip_from  <vSwitch CIDR block of the instance>;
    real_ip_header    X-Forwarded-For;
    real_ip_recursive on;
    Yükseltilmemiş bir ALB örneği kullanıyorsanız set_real_ip_from değerini 100.64.0.0/10 olarak ayarlayın.
  3. Sözdizimini doğrulamak için sudo nginx -t komutunu çalıştırın ardından yapılandırmayı yeniden yüklemek için sudo nginx -s reload komutunu çalıştırın.

Yapılandırma etkili olduktan sonra erişim günlüğünü (varsayılan: /var/log/nginx/access.log ) denetleyerek $remote_addr değerinin artık gerçek istemci IP'sini gösterdiğini doğrulayın.
Trafik WAF veya CDN gibi birden çok ara sunucudan geçiyorsa her ara sunucu katmanının kaynak IP aralıklarını set_real_ip_from değerine ekleyin.
Durum denetimi istekleri X-Forwarded-For başlığını taşımaz bu nedenle bu istekler için $remote_addr değeri hâlâ ALB örneğinin vSwitch CIDR bloğunu (veya yükseltilmemiş örnekler için 100.64.0.0/10 ) gösterir. Bu beklenen bir davranıştır.

Apache

Varsayılan olarak Apache günlüklerindeki %h ALB yönlendirme IP'sini (yerel IP) kaydeder. Mevcut günlük tutma ve Require ip erişim kontrolü kurallarının değiştirilmeden çalışması için bunu gerçek istemci IP'si ile değiştirmek üzere Apache 2.4'teki yerleşik mod_remoteip modülünü kullanın:

  1. Modülün yüklü olduğunu doğrulamak için httpd -M | grep remoteip_module komutunu çalıştırın.

  2. Yapılandırma dosyasında (varsayılan: /etc/httpd/conf/httpd.conf) aşağıdakileri ekleyin:

    RemoteIPHeader       X-Forwarded-For
    RemoteIPTrustedProxy <vSwitch CIDR block of the instance>
    Yükseltilmemiş bir ALB örneği kullanıyorsanız RemoteIPTrustedProxy değerini 100.64.0.0/10 olarak ayarlayın.
  3. Apache'yi yeniden başlatmak için sudo systemctl restart httpd komutunu çalıştırın.

Yapılandırma etkili olduktan sonra erişim günlüğünü (varsayılan: /var/log/httpd/access_log ) denetleyerek %h değerinin artık gerçek istemci IP'sini gösterdiğini doğrulayın.
Trafik WAF veya CDN gibi birden çok ara sunucudan geçiyorsa her ara sunucu katmanının kaynak IP aralıklarını RemoteIPTrustedProxy değerine ekleyin.
Durum denetimi istekleri X-Forwarded-For başlığını taşımaz bu nedenle bu istekler için %h değeri hâlâ ALB örneğinin vSwitch CIDR bloğunu (veya yükseltilmemiş örnekler için 100.64.0.0/10 ) gösterir. Bu beklenen bir davranıştır.