星期二, 10月 30, 2007

FreeBSD 的 mod_extract_forwarded2

一般的 reverse proxy 都不是 reverse NAT,所以 Apache 端必須要做一些處理才能拿到正確的使用者 IP Address,一般都是以 欄位做為判斷的標準,不過這樣的缺點是 PHP 必需要自己判斷。

就是直接把可信任來源的 替代成使用者端的 IP Address,如此一來 的程式不需要改變程式碼,與以前一樣只需要用 $_SERVER["REMOTE_ADDR"] 就可以取得使用者的 IP Address。

下的 安裝完後其實是有問題的,安裝完後的設定是:
LoadModule extract_forwarded2_module libexec/apache22/mod_extract_forwarded2.so

但應該改成:
LoadModule extract_forwarded_module libexec/apache22/mod_extract_forwarded2.so

然後對 reverse proxy 的 IP Address 設定:
AddAcceptForwarder 10.0.0.100

你可以寫個小程式,從不同 IP Address 帶 X-Forwarded-For 參數,將 $_SERVER["REMOTE_ADDR"] 印出測試看看。

Powered by ScribeFire.

1 則留言:

lwhsu 提到...

LoadModule 的問題在 ports/134301 修正了