Kami memiliki dua server penyeimbang beban. Karena kami telah menghosting aplikasi asp.net 3.5 saat ini kami menggunakan permintaan alamat host pengguna untuk mendapatkan ip pengunjung tetapi memberikan ip penyeimbang beban, bukan ip asli. Adakah yang bisa punya kode untuk ini.
Cara mendapatkan IP pengunjung pada mesin loadbalancing menggunakan asp.net
Jawaban (3)
Masalahnya lebih berkaitan dengan fakta bahwa "penyeimbang beban" bertindak sebagai proxy. Jenis penyeimbang beban apa yang Anda gunakan? Saya tahu dengan server Microsoft ISA ada pengaturan untuk meneruskan alamat IP pengguna asli ke server web.
Jika tidak, Anda harus menulis halaman untuk membuang variabel server dan melihat apakah ada variabel server tambahan yang ditambahkan yang memberi Anda alamat IP klien sebenarnya.
Saya pikir Anda harus mencari tidak hanya HTTP_X_FORWARDED_FOR, tetapi untuk semua itu, tergantung apa yang digunakan saldo pemuatan Anda
Context.Request.ServerVariables[CheckAllBelowList]
"HTTP_X_COMING_FROM",
"HTTP_X_FORWARDED_FOR",
"HTTP_X_FORWARDED",
"HTTP_VIA",
"HTTP_COMING_FROM",
"HTTP_FORWARDED_FOR",
"HTTP_FORWARDED",
"HTTP_FROM",
"HTTP_PROXY_CONNECTION",
"HTTP_CLIENT_IP",
"CLIENT_IP",
"FORWARDED",
Pengembalian salah satunya, adalah Ip aktual klien Anda, kecuali jika proxy lain, saya juga perlu mempelajari bagaimana seseorang bisa mendapatkan ini, untuk menemukan pengguna yang berada di belakang 2-3 proxy...
Jika Anda tahu yang lain, tolong beri tahu saya.
tergantung pada server penyeimbang beban, IP klien dapat/harus ditulis ke:
Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
Namun berhati-hatilah jika pengguna juga berada di belakang proxy, nilainya mungkin adalah klien asli proxy, bukan klien penyeimbang beban (yang dalam hal ini akan menjadi IP proxy). Saya tidak yakin perilaku apa yang "normal".
Semoga itu bisa membantu, Alex