|
Modul ini memungkinkan kita untuk mengubah nilai alamat IP klien di header permintaan klien (misalnya, X-Real-IP atau X-Forwarded-For). Fitur ini sangat berguna untuk server Nginx jika Nginx bekerja di belakang beberapa proxy penyeimbangan beban Layer 7, karena IP lokal permintaan klien (yaitu, alamat permintaan klien) ditambahkan ke header alamat IP klien saat melewati proxy Layer 7, sehingga Nginx backend dapat memperoleh nilai alamat IP klien. Modul tidak diinstal secara default, jadi jika Anda ingin menggunakan modul, Anda perlu menambahkan opsi --with-http_realip_module saat mengkompilasi instalasi. Alasan menggunakan modul ini adalah memungkinkan server latar belakang untuk merekam alamat IP klien asli. Contoh konfigurasiset_real_ip_from 192.168.1.0/24; set_real_ip_from 192.168.2.1; real_ip_header X-Real-IP;
Jari Pesan Modul hanya memberikan dua instruksi. Nama instruksi: set_real_ip_from Fungsi: Menentukan alamat tepercaya melalui perintah ini akan diganti dengan alamat IP yang tepat. Soket Unix tepercaya juga dapat digunakan mulai versi 0.8.22 dan seterusnya. IP yang ditetapkan di sini mengacu pada frontendNginx、PernisatauCumi-cumidariIPAlamat. Sintaks: set_real_ip_from [alamat| CIDR|" unix:"] Nilai default: tidak ada Lingkungan penggunaan: http, server, lokasi Nama Instruksi: real_ip_header Fungsi: Perintah ini digunakan untuk mengatur header mana yang akan digunakan untuk mengganti alamat IP. Jika X-Forwarded-For digunakan, modul akan mengganti alamat IP proxy front-end dengan alamat IP terakhir di header X-Forwarded-For. Sintaks: real_ip_header [X-Real-IP| X-Diteruskan-untuk] Nilai Default: real_ip_header X-Real-IP Lingkungan penggunaan: http, server, lokasi Kasus Penggunaan Dalam contoh berikut, lingkungan kita seperti ini: ada dua server Nginx, satu adalah frontend dan yang lainnya adalah backend, frontend Nginx digunakan sebagai proxy, dan backend Nginx digunakan untuk menyediakan akses halaman, dan ada juga klien dengan alamat IP berikut: Nginx Frontend: 192.168.7.10 Backend Nginx: 192.168.1.15 Tuan rumah klien: 218.239.201.36 Konfigurasi Nginx di frontend terlihat seperti ini: server { dengarkan 80; server_name www.xx.com;
lokasi / { html akar; indeks index.html index.htm; Charset UTF-8; }
lokasi /865 { proxy_pass http://192.168.3.139:80/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Tuan Rumah $host; proxy_redirect mati; }
……
} Konfigurasi Nginx untuk backend adalah sebagai berikut: server { dengarkan 80; server_name localhost;
lokasi / { root /var/www/html; indeks index.html index.htm; } Mengakses pengujian Jika kita mengakses http://www.xx.com/865, tidak masalah, itu bisa menjadi akses normal, log aksesnya adalah sebagai berikut: Log dari frontend Nginx: 218.239.201.36 - - [30/Aug/2011:16:09:56 +0800] "DAPATKAN /865/ HTTP/1.1" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-AS; rv:1.9.2.12) Tokek/20101026 Firefox/3.6.12 GTB7.1" Log dari backend Nginx: 192.168.7.10 - - [30/Aug/2011:16:09:56 +0800] "DAPATKAN // HTTP/1.0" 200 151 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-AS; rv:1.9.2.12) Tokek/20101026 Firefox/3.6.12 GTB7.1" Kami melihat bahwa log Nginx backend tidak mencatat alamat IP klien asli, tetapi alamat IP Nginx frontend. Jika Anda memodifikasi konfigurasi server Nginx latar belakang menjadi: server { dengarkan 80; server_name localhost; set_real_ip_from 192.168.3.0/24; set_real_ip_from 100.100.0.0/16; real_ip_header X-Real-IP;
lokasi / { html akar; indeks index.html index.htm; }
……
}
Kemudian kami melakukan tes akses lagi: Log dari frontend Nginx: 218.239.201.36 - - [30/Aug/2011:16:10:28 +0800 "GET /865/ HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-AS; rv:1.9.2.12) Tokek/20101026 Firefox/3.6.12 GTB7.1" Log dari backend Nginx: 218.239.201.36 - - [30/Aug/2011:16:10:28 +0800] "DAPATKAN // HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-AS; rv:1.9.2.12) Tokek/20101026 Firefox/3.6.12 GTB7.1" Dapat dilihat bahwa kali ini latar belakang merekam alamat IP klien.
|