Logging

使用反向埠轉發時在 apache 訪問日誌中記錄客戶端 IP

  • March 14, 2017

我有一個沒有公共 IP 地址(LTE 網際網路)的家庭伺服器,所以我使用另一個具有公共 IP 的伺服器進行反向埠轉發。

我在我的家庭伺服器上使用以下 ssh 參數轉發埠 443 和 80:

-R *:80:*:80 -R *:443:*:443

一切正常,我的家庭伺服器的網站可以通過公共 IP 地址從網際網路訪問。但我有一個問題 - 我在我的 apache 訪問日誌中錯過了客戶端的 IP 地址。而不是IP地址,我只有條目::1而不是IP地址:

::1 - - [11/Mar/2017:14:40:57 +0100] "GET / HTTP/1.0" 200 1775 "-" "-"

我認為這是反向埠轉發的結果。我嘗試將 seral 參數添加到 apache 的 LogFormat 配置中,但沒有成功。有沒有辦法讓客戶端的真實 IP 地址記錄在 apache 訪問日誌中?

通過 SSH 隧道轉發時,您無法獲取客戶端 IP 地址。您的 Apache 看到的只是 TCP 連接的遠端 IP,它是您的 SSH 隧道的端點。

為了獲取真實的客戶端 IP,您需要在具有公共 IP 地址的伺服器上設置反向代理,然後使其在 HTTP 標頭中添加客戶端 IP。

之後,您需要將配置添加到您的 Apache,其中將 HTTP 標頭中的 IP 包含到日誌文件中。

引用自:https://serverfault.com/questions/837790