????????客戶端在訪問互聯(lián)網(wǎng)應(yīng)用服務(wù)器時(shí),與真實(shí)的應(yīng)用服務(wù)器之間會(huì)因?yàn)橛卸鄬臃聪虼?,而?dǎo)致真實(shí)應(yīng)用服務(wù)器獲取的僅是最近一層的反向代理服務(wù)器 IP。為使 Nginx 后端的上游服務(wù)器可以獲得真實(shí)客戶端 IP,Nginx 提供了 ngx_http_realip_module 模塊用以實(shí)現(xiàn)真實(shí)客戶端 IP 的獲取及傳遞的功能。
????????通過該模塊提供的配置指令,用戶可以手動(dòng)設(shè)置上層反向代理服務(wù)器的 IP 作為授信 IP,Nginx 服務(wù)器根據(jù)配置指令的配置排除授信 IP,而甄別出真實(shí)的客戶端 IP 進(jìn)行日志記錄,并傳遞給上游服務(wù)器。模塊配置指令如下表所示。
指令名稱 |
指令值格式 |
默認(rèn)值 |
指令說明 |
set_real_ip_from |
address 或 CIDR 或 unix |
-- |
設(shè)置授信 IP,IP 網(wǎng)段或 UNIX 套接字 |
real_ip_header |
field 或 X-Real-IP 或 X-For-warded-For 或 proxy_protocol |
X-Real-IP |
通過指定的 HTTP 頭字段獲取真實(shí)客戶端 IP |
real_ip_recursive |
on 或 off |
off |
當(dāng)客戶端經(jīng)多層反向代理到達(dá)當(dāng)前服務(wù)器時(shí),指定的 HTTP 頭字段中會(huì)有多個(gè) IP 地址。默認(rèn)會(huì)以最后一個(gè) IP 為真實(shí)客戶端 IP,當(dāng)指令值為 on 時(shí),會(huì)以最后一個(gè)非信 IP 為真實(shí)客戶端 IP文章來源:http://www.zghlxwxcb.cn/news/detail-792732.html |
該模塊指令使用的指令域范圍為http、server、location。配置樣例如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-792732.html
server {
listen 8088;
access_log logs/proxy.access.log main;
set_real_ip_from 192.168.2.159; # 設(shè)置192.168.2.159為授信IP
real_ip_header X-Forwarded-For; # 通過HTTP頭字段X-Forwarded-For獲取真實(shí)客戶端IP
real_ip_recursive on; # 以最后一個(gè)非授信IP為真實(shí)客戶端IP
tcp_nodelay off; # 因啟用緩沖區(qū)功能,所以關(guān)閉立刻發(fā)送功能
location ~ ^/ {
proxy_force_ranges on; # 強(qiáng)制啟用字節(jié)范圍請求支持
proxy_pass http://192.168.2.145:8082;
break;
}
}
到了這里,關(guān)于Nginx(二十) 獲取真實(shí)客戶端IP的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!