Nginx istemci IP adresi (client IP address) nasıl alınır? ($remote_addr, X-Forwarded-For)

Nginx ve İstemci IP Adresi

Nginx, yüksek performanslı bir web sunucusu ve ters proxy sunucusu olarak yaygın bir şekilde kullanılmaktadır. Web uygulamaları ve hizmetleri sunarken, istemcilerin IP adreslerini almak, güvenlik, analiz ve loglama gibi birçok süreçte önemli bir rol oynamaktadır. Nginx, istemci IP adresini almak için birkaç farklı yöntem sunar, en yaygın olanları ise `$remote_addr` ve `X-Forwarded-For` başlıklarıdır.

$remote_addr

Nginx, istemcinin IP adresini almanın en basit yolunu `$remote_addr` değişkeni ile sağlar. Bu değişken, istemcinin Nginx sunucusuna doğrudan bağlandığı durumlarda gerçek IP adresini döndürür. Temel yapılandırma dosyasında, kayıt veya yanıt hazırlama gibi durumlarda bu değişken kullanılabilir. Aşağıdaki örnek, erişim logları için Nginx konfigürasyonunda bu değişkenin nasıl kullanılacağını göstermektedir:

“`
log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;
“`

Bu ayar ile, sunucuya yapılan her istekte istemcinin IP adresi erişim loglarına kaydedilecektir. Ancak, bu yöntemin sınırlamaları bulunmaktadır. Özellikle, Nginx bir ters proxy olarak kullanıldığında, istemcinin gerçek IP adresi kaybolabilir ve sadece proxy sunucusunun IP adresi görünür.

Ters Proxy Senaryoları

Nginx, genellikle başka bir sunucuya istekleri yönlendiren bir ters proxy rolü üstlenir. Bu durumda, `$remote_addr` değişkeninin döndürdüğü adres, istemcinin değil, Nginx sunucusunun IP adresidir. Bu durumu aşmak için, istemcinin gerçek IP adresini almak için `X-Forwarded-For` başlığı kullanılabilir.

`X-Forwarded-For`, istemcinin gerçek IP adresini içerir ve genellikle HTTP isteklerinin üst bilgisine eklenir. Yönlendirilmiş isteklerde, bu başlıkta istemcinin IP adresleri virgülle ayrılmış şekilde listelenir. Gelen isteklerde bu başlık bulunmuyorsa, `$remote_addr` değişkenine geri dönülmektedir.

X-Forwarded-For Başlığı Kullanımı

Nginx konfigürasyon dosyasında `X-Forwarded-For` başlığının dikkate alınması için çeşitli ayarlamalar yapılabilir. Dikkate alınması gereken durum, birçok proxy sunucusu ardışık olarak kullanıldığında, bu başlıkta birden fazla IP adresi oluşabilmektedir. Bu IP adreslerinin işlenmesi ve en sağdaki IP adresinin alınması önemlidir. Aşağıdaki yapılandırma, bu işlemi gerçekleştirmek için gereken ayarları içermektedir:

“`
set_real_ip_from 192.168.1.0/24; Güvenilir proxy sunucularının IP adres aralığı
real_ip_header X-Forwarded-For; Gerçek istemci IP’sinin hangi başlıkta bulunduğu
“`

Buradaki `set_real_ip_from` direktifi, hangi IP adreslerinin güvenilir olduğunu belirtir. Bu IP adres aralığı dışında gelen istekler için `X-Forwarded-For` başlığı dikkate alınmayacaktır. Güvenilir bir kaynak olarak belirlenmiş bir IP adresinden gelen isteklerde, `real_ip_header` ile belirtilen başlık okunduğunda, istemcinin gerçek IP adresine ulaşılacaktır.

Diğer Başlıklar

`X-Forwarded-For`, istemci IP adresini almak için en yaygın kullanılan başlıktır. Bununla birlikte, benzer işlevselliği sağlayan bazı başka başlıklar da bulunmaktadır. `X-Real-IP` başlığı, bazı uygulamalarda istemcinin IP adresini belirten alternatif bir başlık olarak kullanılmaktadır. Ancak her durumda uygulamanın bu başlığı nasıl kullandığına dikkat etmek gerekmektedir.

Güvenlik Önlemleri

İstemcinin gerçek IP adresinin alınması, yalnızca analitik veya loglama için değil, aynı zamanda güvenlik açısından da önemlidir. Yanlış yapılandırmalarda, üzerinden geçilen arabellekler veya ters proxy sunucuları nedeniyle, kötü niyetli kullanıcıların kendilerini gizlemesi veya yanıltan bilgiler vermesi mümkün olmaktadır. Bu nedenle, yalnızca güvenilir kaynaklardan gelen `X-Forwarded-For` başlığını kabul etmek, siber saldırılara karşı bir savunma mekanizması oluşturmaktadır.

Basit bir güvenlik önlemi olarak, sunucuya gelebilecek isteklerin kaydedildiği log dosyaların analizi yapılmalı ve anormal IP adresleri ve kullanıcı davranışları için dikkatli bir şekilde gözden geçirilmelidir.

Sonuç

Nginx, istemci IP adreslerini almanın birkaç yolunu sunmakta olup, bu adreslerin doğru bir şekilde elde edilmesi, uygulamaların güvenliği ve kaliteli hizmet sunumu açısından kritik öneme sahiptir. `$remote_addr` ve `X-Forwarded-For` başlıkları, bu bağlamda en yaygın kullanılan yöntemlerdir. İstemcinin gerçek IP adresini almak için doğru yapılandırmalar yapıldığında, Nginx etkili bir şekilde kullanılabilir.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

SON İÇERİKLER

İLGİNİZİ ÇEKEBİLİR