Nginx 教程- 获取真实IP模块 - http_realip_module
有這么一情況,某網(wǎng)站靜態(tài)文件很多,而且用戶訪問的來源有網(wǎng)通,有電信,有鐵通...設(shè)置還有國(guó)外。
為了令處于不同網(wǎng)絡(luò)運(yùn)營(yíng)商的用戶收取靜態(tài)文件的速度都有良好的體現(xiàn),該網(wǎng)站分別在這些不同運(yùn)營(yíng)商的積分中部署了Squid,然后統(tǒng)一 Proxy 到主站的 Nginx 上,形成分布式緩存架構(gòu)。
如果單是這樣的話,主站上 Nginx 的日志,或者應(yīng)用所獲得的IP來源,始終都只會(huì)是各個(gè)機(jī)房中 Squid 的IP。而不是用戶的真實(shí)IP。Apache 的話,能通過以上所提到的mod_rpaf解決。當(dāng)然,強(qiáng)大的 Nginx 也有自己的看家法寶。
Nginx 有個(gè)在編譯時(shí)默認(rèn)不加載的模塊 http_realip_module ,就是用來實(shí)現(xiàn)這一功能。
但網(wǎng)上很多作者對(duì)這一模塊的理解完全錯(cuò)誤,以為是 Proxy 參數(shù)里頭的 proxy_set_header 。
proxy_set_header 用于向后端轉(zhuǎn)發(fā) IP head,這一參數(shù)是位于 proxy_module ?模塊中的,而并非 http_realip_module .
好多的博主寫文章的時(shí)候,都把這模塊的用途寫成了“為后端應(yīng)用提供 realip ”
Nginx 官方 wiki 對(duì)于該模塊的說明?http://wiki.nginx.org/NginxHttpRealIpModule
“It is useful if nginx works behind some proxy of L7 load balanver, and request come from local IP, but proxy add request header with client's IP.
This module isn't built by default, enable it with the configure option ”
說簡(jiǎn)單了,就是 Nginx 的 http_realip_module = Apache 的 mod_rpaf 用于接受前端發(fā)來的 IP head 信息,從獲取到真是的用戶IP。
配置方式相當(dāng)簡(jiǎn)單,重新編譯 Nginx 加上 --with-http_realip_module 參數(shù),如:
./configure --prefix=/opt/nginx --with-http_stub_status_module? --with-pcre=../pcre-6.6 --with-http_realip_module
make
make install
怎么?Nginx 的服務(wù)正在跑著?要重啟不容易?
簡(jiǎn)單,原來你的 Nginx 裝在哪,重新編譯的時(shí)候就選哪,直接 make install 進(jìn)去就會(huì)把原來的覆蓋掉。
然后執(zhí)行 Killall -s USR2 nginx 即可平滑升級(jí)。
編輯 Nginx.conf
在 location 里頭插入
set_real_ip_from?? 192.168.1.0/24;???? 指定接收來自哪個(gè)前端發(fā)送的 IP head 可以是單個(gè)IP或者IP段
set_real_ip_from?? 192.168.2.1;??
real_ip_header???? X-Real-IP;???????? IP head? 的對(duì)應(yīng)參數(shù),默認(rèn)即可。
配置跟 mod_rpaf??大致相同!
配置完成后 sbin/nginx -t 測(cè)試語法
測(cè)試無誤執(zhí)行 Killall -s HUP nginx 平滑加載配置。
這么就無間斷完成了Nginx這一模塊的加載。
本文轉(zhuǎn)自 zhegaozhouji 51CTO博客,原文鏈接:http://blog.51cto.com/1038741/1736090
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的Nginx 教程- 获取真实IP模块 - http_realip_module的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。