becky98 2019-1-9 10:57
讓 nginx proxy 代理後端的 apache 獲取訪客真實IP
很多網站都會有偵測使用者 IP 的功能,不管是判斷使用者來自哪邊,或者是記錄使用者的位置。<br><br>而當你使用 nginx proxy 來當代理伺服器後,Apache log 的連線IP都變成 proxy 的IP了<br>不過 proxy 會將真實IP記錄在 Header 的 X-Forwarded-For<br>所以我們可以這樣做...來取的真實IP<br><br>(1)proxy 端的 nginx配置文檔<br>[quote]<br><br>...<br> location / {<br><br> .....<br><font color="Blue"> proxy_set_header Host $host;<br> proxy_set_header X-Real-IP $remote_addr;<br> proxy_set_header REMOTE-HOST $remote_addr;<br> proxy_set_header X-Forwarded-For $remote_addr;</font><br> proxy_pass http://111.222.333.444;<br><br> }<br>[/quote]<br><br>(2)源頭 apache 配置 httpd.conf <br><br>添加%{X-FORWARDED-FOR}i<br>Apache日誌配置文檔中定義了兩種打印格式,分別為combined格式和common格式。<br>這邊使用combined格式<br><br>[quote]<br>找到這一行<br>LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined<br><br>將 %h 用 %{X-FORWARDED-FOR}i 取代<br><font color="Blue">LogFormat "%{X-FORWARDED-FOR}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined</font><br>[/quote]<br><br>(3)虛擬機配置<br>[quote]<br><VirtualHost *:80><br> ...<br><font color="Blue"> CustomLog logs/all-web-log.com.tw.access.log combined</font><br></VirtualHost><br>[/quote]<br><br>httpd 重啟後就可以囉~<br><br>後端Apache日誌獲取前端Nginx反向代理的真實IP地址<br><a href="https://hk.saowen.com/a/d4fc4dca5fc038b2f4e2107b5acf2b6b192793a78c393c02b592ce51a2611e89" target="_blank">https://hk.saowen.com/a/d4fc4dca5fc038b2f4e2107b5acf2b6b192793a78c393c02b592ce51a2611e89</a>