顯示廣告
隱藏 ✕
看板 KnucklesNote
作者 Knuckles (站長 那克斯)
標題 [CentOS7] 安裝Apache mod_remoteip修正Balancer的IP
時間 2017-02-20 Mon. 04:11:08


使用 Linode 的 Node Balancer 來分流後,
Apache log 的連線IP都變成 Balacer 的IP了
不過 Balancer 會將真實IP記錄在 Header 的 X-Forwarded-For
所以需要安裝個模組讓 Apache 可以讀取 X-Forwarded-For 記錄的真實IP

Apache 2.2 要使用 mod_rpaf 可參考這篇
[Apache] 用 mod_rpaf 來記錄 X-Forwarded-For IP - KnucklesNote板 - Disp BBS

Apache 2.4 有內建 mod_remoteip 可以用


先檢查 Apache 有沒有載入 mod_remoteip
$ vim /etc/httpd/conf.modules.d/00-base.conf
要有這一行
LoadModule remoteip_module modules/mod_remoteip.so


新增設定檔

$ sudo vim /etc/httpd/conf.d/remoteip.conf
<IfModule mod_remoteip.c>
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 192.168.255.0/24
</IfModule>
其中 192.168.255.0/24 就是 192.168.255.* 的意思
也就是 Linode Node Balancer 用的區網IP位址


然後還要改一下 Apache 的 LogFormat
$ sudo vim /etc/httpd/conf/httpd.conf

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
前面的 %h 改成 %a
LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

%h 記錄的還是 Balancer 的 IP,
要改用 %a 才會變成 mod_remoteip 取得的真實 IP
可參考 Apache LogFormat 參數表


重啟 Apache
$ sudo systemctl restart httpd

使用 Balancer 連線後,Apache log 記錄的 IP 正確

使用 PHP 取得的 IP 也正確
echo 'REMOTE_ADDR: '.$_SERVER['REMOTE_ADDR'];



參考
Replacing mod_rpaf with mod_remoteip in apache 2.4 - Syslint.com

--
※ 作者: Knuckles 時間: 2017-02-20 04:11:08
※ 編輯: Knuckles 時間: 2017-02-24 23:14:38
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 1559 
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇
看板名稱: 確定(Enter) 取消(Esc) 搜尋(Space)
查詢帳號: 確定(Enter) 取消(Esc) 搜尋(Space)
搜尋: m)m文 b)進板 c)未分類 a)作者 /)標題 q)取消?[q]

搜尋 送出(Enter) 取消(Esc)

回覆文章至: f)看板 m)作者信箱 b)兩者皆是 q)取消?[f]
要引用原文嗎? y)引用原文 n)不引用 a)全部回覆 r)複製原文 q)取消?[y]
轉錄本文章於看板: 1)使用連結 2)使用複製 q)取消 ?[1]
轉寄至站內信箱於使用者: 確定(Enter) 取消(Esc)
轉寄至站內信箱於使用者: 確定(Enter) 取消(Esc)
修改文章標題為: 確定(Enter) 取消(Esc)
修改文章標題為: 確定(Enter) 取消(Esc) 全部(a)

確定要刪除這篇文章?(可按大U救回) 確定(Enter) 取消(Esc)

刪除理由:

確定(Enter) 取消(Esc)
加到這個分類: 確定(Enter) 下一層(→) 回上層(←) 取消(Esc)
你覺得這篇文章: 1)真讚 2)真瞎 q)取消?[1] (再選一次即可收回)
你覺得這篇文章: 1)值得推薦 2)表示反對 3)單純註解 q)取消?[3]
guest
預覽(Enter) 取消(Esc)
上傳圖片
按ctrl+Enter可輸入下一行。
guest
確定要送出? 確定(Enter) 取消(Esc) 繼續(e)
搜尋: 送出(Enter) 取消(Esc)

▏▎▍▌▋▊▉ 請按任意鍵繼續