nginx如何獲取用戶真實(shí)ip
nginx如何獲取用戶真實(shí)ip
我們有的接口牽扯到用戶信息的變更,這些接口只允許接入方來調(diào)我們,所以我們在nginx上,關(guān)于這些接口都個(gè)ip白名單,
里面配上接入方的出口ip。
下面是我們nginx的access里的日志。

nginx取的我們這個(gè) $remote_addr 當(dāng)做真實(shí)ip了
而事實(shí)上,$http_X_Forwarded_For 才是用戶真實(shí)ip
$remote_addr只是我們f5的內(nèi)網(wǎng)地址(用戶 -->f5 --> nginx)
導(dǎo)致nginx取錯(cuò)了,用戶調(diào)接口總是403
解決方案
在 http 模塊 加
set_real_ip_from 172.17.10.125; real_ip_header X-Forwarded-For; real_ip_recursive on;
即可!
這里我們添加之后啟動(dòng)nginx報(bào):
nginx: [emerg] unknown directive "set_real_ip_from" in /home/lnidmp/nginx/conf/nginx.conf:26
所以我們添加realip模塊,重新編譯nginx
1、cd /usr/local/nginx-1.6.3
2、./configure --prefix=/usr/cmcc/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module
3、 make && make install
溫馨提示:
- 1、set_real_ip_from 是指接受從哪個(gè)信任前代理處獲得真實(shí)用戶ip
- 2、real_ip_header 是指從接收到報(bào)文的哪個(gè)http首部去獲取前代理傳送的用戶ip
- 3、real_ip_recursive 是否遞歸地排除直至得到用戶ip(默認(rèn)為off)
首先,real_ip_header 指定一個(gè)http首部名稱,默認(rèn)是X-Real-Ip,假設(shè)用默認(rèn)值的話,nginx在接收到報(bào)文后,會(huì)查看http首部X-Real-Ip。
(1)如果有1個(gè)IP,它會(huì)去核對,發(fā)送方的ip是否在set_real_ip_from指定的信任ip列表中。如果是被信任的,它會(huì)去認(rèn)為這個(gè)X-Real-Ip中的IP值是前代理告訴自己的,用戶的真實(shí)IP值,于是,它會(huì)將該值賦值給自身的$remote_addr變量;如果不被信任,那么將不作處理,那么$remote_addr還是發(fā)送方的ip地址。
(2)如果X-Real-Ip有多個(gè)IP值,比如前一方代理是這么設(shè)置的:proxy_set_header X-Real-Ip $proxy_add_x_forwarded_for;
得到的是一串IP,那么此時(shí)real_ip_recursive 的值就至關(guān)重要了。
nginx將會(huì)從ip列表的右到左,去比較set_real_ip_from 的信任列表中的ip。
- 如果real_ip_recursive為off,那么,當(dāng)最右邊一個(gè)IP,發(fā)現(xiàn)是信任IP,即認(rèn)為下一個(gè)IP(右邊第二個(gè))就是用戶的真正IP;
- 如果real_ip_recursive為on,那么將從右到左依次比較,知道找到一個(gè)不是信任IP為止。
然后同樣把IP值復(fù)制給$remote_addr。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Nginx代理后如何獲取客戶端真實(shí)IP地址
- nginx經(jīng)過多層代理后獲取真實(shí)來源ip過程詳解
- 基于Nginx 反向代理獲取真實(shí)IP的問題詳解
- Nginx 獲取客戶端真實(shí)IP $remote_addr與X-Forwarded-For的實(shí)現(xiàn)
- Nginx獲取客戶端真實(shí)IP(real_ip_header)的實(shí)現(xiàn)
- Nginx反向代理后無法獲取客戶端真實(shí)IP地址
- nginx獲取真實(shí)的ip的方法
- 基于nginx獲取代理服務(wù)ip以及客戶端真實(shí)ip詳解
- nginx獲取客戶端真實(shí)ip的常用方法
- Nginx獲取客戶端真實(shí)IP的原理及配置方法
- Nginx獲取IP地址變量的幾種方式
相關(guān)文章
Nginx負(fù)載均衡下的webshell連接的實(shí)現(xiàn)
在解決shell文件上傳問題、命令執(zhí)行漂移等困難后,可實(shí)現(xiàn)正常的webshell上傳,本文主要介紹了Nginx負(fù)載均衡下的webshell連接的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
nginx如何實(shí)現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈
這篇文章主要為大家介紹了nginx實(shí)現(xiàn)配置靜態(tài)資源服務(wù)器及防盜鏈步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
利用Nginx處理Vue開發(fā)環(huán)境的跨域的方法
這篇文章主要介紹了利用Nginx處理Vue開發(fā)環(huán)境的跨域的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-06
nginx+redis實(shí)現(xiàn)session共享
這篇文章主要為大家詳細(xì)介紹了nginx+redis實(shí)現(xiàn)session的共享,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
對Nginx支持SSL的性能進(jìn)行優(yōu)化的方法
這篇文章主要介紹了對Nginx支持SSL的性能進(jìn)行優(yōu)化的方法,作者分別以不同方法進(jìn)行了8個(gè)優(yōu)化實(shí)驗(yàn),需要的朋友可以參考下2015-06-06

