[Lighttpd] get real IP from proxy

由於先前在測試用 nginx 放在原本的 lighttpd 前面作 load balance 還是 reverse proxy 什麼的, 不過因為完全沒碰過, 只能亂搞, 沒想到成功了 XD (雖然有設錯, 整個站有掛掉一下下)

本來是想說到時候 StickerAction 撐不住, 可以把 request 分到別台去, 不過看目前的情形都還撐得住, 最高也還沒到 20 req/s, 是我小看了 256slice 阿 ~"~ 不過應該也是因為加了之前做的, 讓圖片快取住的功能, 才能減少一些 request 的。

不過當時唯一有問題的就是, 當我再看 log 跟 session 的時候, 發現, ip 全部都是 127.0.0.1 阿!! :o 幸好之前程式中 session 沒有要 match ip XD 原來 lighttpd 那邊要開 mod_extforward 來取得 client 經過 nginx proxy 後, 原本的 IP 位址。

lighttpd 再 1.4.14 之後就都有 modextforward, 只是好像預設的 lighttpd.conf 都不會列出來。 所以只要再 server.modules 裡面載入 modextforward 就可以了, 只是記得要放在 mod_accesslog 後面載入, 如下:

server.modules = (  
    "mod_rewrite",
    ...
    "mod_accesslog",
    "mod_extforward"
)```

然後加上個相信的 IP 來源就可以啦 :D

extforward.forwarder = (
"127.0.0.1" => "trust" )```

雖然也不知道放個 nginx 在前面有沒有發揮什麼作用就是了 XD anyway 至少之後可以直接把 request 分到另外一台

tzangms

Read more posts by this author.

Subscribe to Oceanic / 海海人生

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!