閱讀36 返回首頁    go 技術社區[雲棲]


Apache前端使用SLB 7層轉發,獲取客戶端真實IP的方法

Apache 前端使用負載均衡SLB 7層(http/https)轉發,Apache如何獲取客戶端真實IP?

答案是通過HTTP頭中的X-Forwarded-For 進行獲取,SLB相當於一個代理,在轉發HTTP請求時,會把客戶端真實IP地址,加入到 X-Forwarded-For ,ECS上的Apache,可以進行配置取出X-Forwarded-For 記錄的客戶端真實ip。

下麵介紹Apache如何進行配置。

需要安裝一個Apache的第三方模塊:mod_rpaf
這個模塊也有好幾個版本,建議安裝 github上的:https://github.com/y-ken/mod_rpaf
好處是這個版本的模塊,配置時支持IP段匹配的方式
(Support for partial IP address as '192.168.' for RPAFproxy_ips.)

以Centos6.8 yum安裝的Apache為例 。
其他係統的安裝方法,可以參考github上說明 https://github.com/y-ken/mod_rpaf
1、執行命令安裝模塊mod_rpaf

yum localinstall https://y-ken.github.com/package/centos/6/x86_64/mod_rpaf-fork-0.6-5.el6.x86_64.rpm

安裝後會自動生成mod_rpaf的配置文件

/etc/httpd/conf.d/rpaf.conf

模塊放在

/etc/httpd/modules/mod_rpaf-2.0.so

檢查配置文件和模塊都有了,說明已經正常安裝成功。

ls /etc/httpd/conf.d/rpaf.conf 
ls /etc/httpd/modules/mod_rpaf-2.0.so

2、接下來修改模塊 mod_rpaf 的配置文件

vi  /etc/httpd/conf.d/rpaf.conf

在默認配置的基礎上,修改2行配置 RPAFproxy_ips 和 RPAFsethostname

RPAFproxy_ips: 設置SLB的內網IP地址,ip地址信息參考:https://help.aliyun.com/document_detail/27660.html
設置的IP地址可以用IP段的形式,多個IP之間空格隔開,注意SLB的內網IP段掩碼,其中有 10 位和 15 位的掩碼 100.64.0.0/10 ,100.116.0.0/15   可以合並可以寫成  100. 

RPAFsethostname: 修改為On

修改後的配置內容

LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFproxy_ips 10.158. 10.159. 10.49. 100. 100.109. 100.97. 
RPAFheader X-Forwarded-For
RPAFsethostname On
RPAFsethttps Off
RPAFsetport Off

3、修改完配置後,重啟Apache

service  httpd restart

然後查看Apache的訪問日誌,已經可以正常記錄客戶端真實訪問Ip。

其中 HEAD / HTTP/1.0  是SLB的健康檢查,

100.116.186.58 - - [20/Sep/2017:11:42:48 +0800] "HEAD / HTTP/1.0" 200 - "-" "-"
100.116.209.46 - - [20/Sep/2017:11:42:48 +0800] "HEAD / HTTP/1.0" 200 - "-" "-"
117.73.243.50 - - [20/Sep/2017:11:42:49 +0800] "GET / HTTP/1.0" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"
![_](https://yqfile.alicdn.com/bc588aa4707c27c44637fb72f03835179654b8e8.png)

最後更新:2017-09-20 12:03:14

  上一篇:go  SAP HANA Express Edition (HXE)-二進製安裝使用步驟
  下一篇:go  SAP HANA Express Edition (HXE)-虛擬機模板安裝使用步驟