新增nginx新模組,獲取客戶真實ip

2022-08-19 00:21:09 字數 2781 閱讀 6499

當前是客戶端登入軟體後台獲取不到客戶的真實ip而是雲盾的**

ip為了獲取到真實ip後來發現通過配置

nginx

的read_ip

模組就可以了

當nginx處在

haproxy

後面時,就會把

remote_addr

設為haproxy的ip

,這個值其實是毫無意義的,可以通過

nginx

的realip

模組,讓它使用

x_forwarded_for

裡的值。使用這個模組需要重新編譯

nginx

,增加--with-http_realip_module

引數目前系統版本,及已有的模組(安裝新模組時這些需要重新編譯)

nginx安裝目錄放在了/usr/local/目錄下

編譯安裝新模組時--with-http_realip_module(訪問

nginx

是可以得到真實客戶真實ip)

安裝只要make就行,不要

make install

2,備份原nginx下的

sbin/nginx

二進位制檔案,把新生成的移過去

編譯之後目錄下會有乙個objs的目錄,新的

nginx

二進位制檔案就在此目錄下

[root@web01 nginx-1.4.7]# cd objs/

cp nginx /usr/local/nginx/sbin/

之後再檢查目前的最新模組,已經有了--with-http_realip_module

3,修改配置檔案

在server下新增

set_real_ip_from   59.56.19.0/24;(**ip網段)

real_ip_header     x-forwarded-for;

說明:設定ip源的時候可以設定單個

ip,也可以設定

ip段,另外是使用

x-real-ip

還是x-forwarded-for

,取決於前面的伺服器有哪個頭。我這裡設定的是

x-forwarded-for

4,重啟

nginx

[root@sweb01 vhost]# /usr/local/nginx/sbin/nginx -s stop

[root@sweb01 vhost]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

之後再次登入客戶端訪問後台就可以看到客戶的真實ip而不是**

ip解釋:

x-forwarded-for和

x-real-ip

的區別

x-forwarded-for是用於記錄**資訊的,每經過一級**(匿名**除外

),**伺服器都會把這次請求的**

ip追加在

x-forwarded-for中

x-real-ip,一般只記錄真實發出請求的客戶端ip

什麼是remote_addr

remote_addr代表客戶端的

ip,但它的值不是由客戶端提供的,而是服務端根據客戶端的

ip指定的,當你的瀏覽器訪問某個**時,假設中間沒有任何**,那麼**的

web伺服器(

nginx

,apache

等)就會把

remote_addr

設為你的機器

ip,如果你用了某個**,那麼你的瀏覽器會先訪問這個**,然後再由這個****到**,這樣

web伺服器就會把

remote_addr

設為這台**機器的ip。

什麼是x_forwarded_for

正如上面所述,當你使用了**時,web伺服器就不知道你的真實

ip了,為了避免這個情況,**伺服器通常會增加乙個叫做

x_forwarded_for

的頭資訊,把連線它的客戶端

ip(即你的上網機器

ip)加到這個頭資訊裡,這樣就能保證**的

web伺服器能獲取到真實

ip

nginx新增新模組

git clone 2.放入指定位置 mv echo nginx module master usr local src nginx 1.8.1 echo nginx module 3.檢視已編譯引數 usr local nginx sbin nginx v 結果為 4.重新編譯 ps 這裡只需要m...

nginx新增新模組

git clone 2.放入指定位置 mv echo nginx module master usr local src nginx 1.8.1 echo nginx module 3.檢視已編譯引數 usr local nginx sbin nginx v 結果為 4.重新編譯 ps 這裡只需要m...

新增新的nginx模組

說明 已經安裝好的nginx,需要新增乙個未被編譯安裝的模組,需要怎麼弄呢?具體 cd data software git clone 2.檢視nginx編譯安裝時安裝了哪些模組 可以看出編譯安裝使用了 prefix usr local nginx with http ssl module with...