Real-IP kullanılırken $ remote_addr orijinal değeri nasıl günlüğe kaydedilir


9

Ortamımın çeşitli sistemlerden geçen kullanıcı istekleri var:

[Müşteri] -> [ELB] ---> [nginx] -> [web]

(ELB = AWS Elastik Yük Dengeleyici)

Bu cevap sayesinde , nginx belirleme ve doğru istemci IP adresini X-Forwarded-Forve X-Real_IPüstbilgileri ile akış yukarı sunuculara (web) geçiriyorum. İlgili nginx yapılandırması:

    real_ip_header      X-Forwarded-For;
    set_real_ip_from        10.0.0.0/8;
    real_ip_recursive   on;
    proxy_set_header X-Real-IP $remote_addr;

Benim sorunum bu, nginx Real IP modülü mevcut değişkenin hesaplamaları sonucu ile değiştirir . Bu bana kaynak istemci IP verir, ancak aslında proxy (yani ELB) isteği gönderen sistemin IP adresini kaybediyorum.$remote_addrX-Forwarded-For

Genel olarak, istemci IP'sine sahip olmak benim için daha önemlidir, ancak trafiğin nasıl aktığını anlamak (ve hata ayıklamak) için isteklerin tam zincirini günlüğe kaydetmek istiyorum. Şu anda, sadece istemci IP, kendi IP ve yukarı akış sunucu IP nginx günlüğü olabilir. ELB IP'sini de kaydedebiliyorum.

X-Istence'in 2013'te aynı soruyu biraz şansla sorduğunu görüyorum . O zamandan beri bir şey değişti veya iyileşti mi?

Yanıtlar:


8

Değişkende$realip_remote_addr bağlanan ELB'nin orijinal istemci adresini alabilirsiniz , ancak bu değişkenin yalnızca nginx 1.9.7'de eklendiğini unutmayın, bu nedenle nginx'in çok yeni bir sürümünü çalıştırmanız gerekir.


Teşekkürler @Michael Hampton ♦! Kendi soruma cevap vermek için geri dönüyordum çünkü alternatif bir strateji izledikten sonra nihayet tökezledim $realip_remote_addr. Güzel çalışıyor. Aslında çalışmak için proxy_protocol almaya çalışıyordu ve 1.9.7 için nginx yama notları geldi
michaelg
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.