Lingkungan saya memiliki permintaan pengguna yang melewati sejumlah sistem:
[Klien] -> [ELB] ---> [nginx] -> [web]
(ELB = Penyeimbang Beban AWS Elastis)
Berkat jawaban ini , saya harus menentukan dan meneruskan alamat IP klien yang benar ke server hulu (web) dengan header X-Forwarded-For
dan X-Real_IP
. Konfigurasi nginx yang relevan:
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;
Masalah saya adalah ini, modul Real IP di nginx menggantikan$remote_addr
variabel yang ada dengan hasil X-Forwarded-For
perhitungannya. Ini memberi saya IP klien asal, tapi saya kehilangan alamat IP sistem yang benar-benar mengirim permintaan ke proxy (yaitu ELB).
Secara keseluruhan, memiliki IP klien lebih penting bagi saya, tetapi saya ingin dapat mencatat seluruh rantai permintaan sehingga saya dapat memahami (dan men-debug) bagaimana traffic mengalir. Saat ini, saya hanya dapat memiliki nginx log IP klien, IP sendiri, dan IP server hulu. Saya ingin dapat mencatat IP ELB juga.
Saya melihat X-Istence mengajukan pertanyaan yang sama pada 2013, dengan sedikit keberuntungan. Apakah ada yang berubah atau membaik sejak saat itu?
sumber
$realip_remote_addr
. Itu bekerja dengan indah. Sebenarnya mencoba untuk mendapatkan proxy_protocol untuk bekerja dan menemukan catatan patch nginx untuk 1.9.7