我有一个没有公共 IP 地址(LTE 互联网)的家庭服务器,因此我使用另一个具有公共 IP 的服务器进行反向端口转发。
我在我的家庭服务器上使用以下 ssh 参数转发端口 443 和 80:
-R *:80:*:80 -R *:443:*:443
一切运行正常,我的家庭服务器的网站可以通过公共 IP 地址从互联网访问。但我有一个问题 - 我在 Apache 访问日志中遗漏了客户端的 IP 地址。我没有 IP 地址,只有以下条目::1
:
::1 - - [11/Mar/2017:14:40:57 +0100] "GET / HTTP/1.0" 200 1775 "-" "-"
我认为这是反向端口转发的结果。我尝试在 apache 的 LogFormat 配置中添加一些参数,但没有成功。有没有办法将客户端的真实 IP 地址记录在 apache 访问日志中?
答案1
通过 SSH 隧道转发时,您无法获取客户端 IP 地址。Apache 看到的只是 TCP 连接的远程 IP,即 SSH 隧道的端点。
为了获取真实的客户端 IP,您需要在具有公共 IP 地址的服务器上设置反向代理,然后让其在 HTTP 标头中添加客户端 IP。
之后,您需要向 Apache 添加配置,将包含 HTTP 标头中的 IP 的配置添加到日志文件中。