Apache2.4 需要 IP 不起作用,因为 127.0.0.1

Apache2.4 需要 IP 不起作用,因为 127.0.0.1

我正在尝试使用 Require ip XXXX 在 Apache 2.4 上配置 .htaccess

我遇到的问题是,所有请求似乎都来自 127.0.0.1,而不是请求的公共 IP。我通过在线搜索发现,这可能是由于服务器上的缓存或代理造成的。

服务器是 OS X Server,当我在服务器上被禁止时,日志显示我的请求来自 127.0.0.1 - 但我肯定不在本地主机上。Apache 是否有任何可能导致这种情况的此类代理?

我找到的答案是:

  1. 在服务器管理 -> Web -> 设置 -> 网站 -> 选项中关闭性能缓存 这充当 Apache 前面的代理服务器,以提高某些文件的性能。但是,一个副作用是 Apache 看到的是代理服务器的 IP 地址,而不是用户的 IP 地址。性能缓存或远程 IP 地址。选一个。你不能同时拥有

答案1

您可能已经解决了这个问题。不确定您运行的是哪个版本的 OSX 服务器,但您正确地假设这是代理问题。对我有用的是编辑 httpd_server_app.conf 文件。在 IfModule log_config_module 部分中,您会找到日志记录格式。

这是需要编辑的一个:

LogFormat "%v %a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedvhost

如果你把它改成这样:

LogFormat "%v %{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedvhost

它应该可以修复它。

编辑:

后来我发现了一个更好的解决方案。与其在 httpd_server_app.conf 文件中弄乱日志格式,

如果您将其添加/编辑到 httpd_server_app.conf 文件:

<IfModule remoteip_module>
    RemoteIPHeader X-Forwarded-For
    RemoteIPInternalProxy 127.0.0.1
</IfModule>

这会将上游内部代理添加为受信任的源,然后将正确的客户端地址填入 remoteaddress。所有默认的 apache 日志格式都会显示正确的地址。此方法的另一个优点是您可以运行 mod_status (server-status),它会在其报告中显示正确的客户端地址。

相关内容