reverse_proxy_01.gif

這個標題真的有點難下,因為很難一句話解釋這個概念,綠色工廠已經使用reverse proxy的架構很長一段時間了,何謂reverse proxy?就是反向代理,網站的訪客越多越有有效果,省去90%的apache process,等於也節省了相當多的資源,若是reverse proxy再加上cache的功能,那麼網站的速度真的會大幅度提升,目前本站使用的reverse proxy為varnish,使用非常久了~不過心得還不是太多。

reverse_proxy_02.gif
由於大家都只對revere proxy連線,實際存取apache的就只有reverse proxy而已,若是不透過reverse proxy,apache的log可以清楚的紀錄每一個連線的ip,但是透過了reverse proxy之後,所有瀏覽紀錄會變成只剩下一個,以上圖為例,所有的瀏覽紀錄都來自2.2.2.2,這樣的情況是不被允許的,雖然說reverse proxy也可以留下紀錄,但是遇到有問題要比對時就相當麻煩了,所以還是希望apache可以記錄到原始的ip。

這時候可以安裝rpaf的模組,來達到透過reverse proxy卻可以得到真實ip的功能,這樣子大家了解標題在說什麼了嗎?

安裝步驟:
# wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
# tar -zxvpf mod_rpaf-0.6.tar.gz
# cd mod_rpaf-0.6
# apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

如果出現以下等錯誤
error: 'conn_rec' has no member named 'remote_ip'
warning: implicit declaration of function 'inet_addr'
error: 'conn_rec' has no member named 'remote_ip'

請執行:(參考來源
# git clone git://gist.github.com/2716030.git
# patch < 2716030/mod_rpaf-2.0.c.patch
# apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

更改httpd.conf設定檔:
LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFproxy_ips 127.0.0.1 2.2.2.2(reverse proxy ip)
RPAFsethostname On
RPAFheader X-Forwarded-For