2014/11/13
在reverse proxy後取得原始客戶端ip
首先文章以以下代稱
Nginx代表的是Reverse proxy server
Apache代表的是Backend server
透過Nginx反向代理Apache
通常在Apache拿到的Client IP會是這個Nginx的IP
為了將Client IP(Remote IP)傳送到Apache
我們必須在Nginx與Apache做點設定
Nginx端的設定:
proxy.conf
```
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
```
此設定是為了將Client IP放到往Apache送的Request header中
但是單單做這樣的這定Apache的log還是不會紀錄Nginx的IP
以下重要的來了
Apache端必須安裝mod_rpaf這個套件
```
sudo apt-get install libapache2-mod-rpaf
```
接著編輯rpaf.conf
```
<ifmodule mod_rpaf-2.0.c>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 ::1 #這邊加上Nginx的IP
RPAFheader X-Forwarded-For
</IfModule>
```
將Nginx與Apache重啟後
Apache的log就會記錄真正的Client IP了
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言