【问题标题】:ProxyPreserveHost seems to do little for meProxyPreserveHost 似乎对我没什么用
【发布时间】:2013-03-05 16:10:15
【问题描述】:

我在网上看到很多人提到使用ProxyPreserveHost On 来确保代理后端接收原始调用者的主机名。我正在使用它来加强我的 Web 应用程序的安全性(Java、Tomcat),而如果我的日志能显示用户实际所在的位置,那也很好。我的 Tomcat 日志现在显示了这一点——完全没用:

127.0.0.1 - - [17/Mar/2013:06:32:13 +0100] "GET /webapp/frontend/app/partials/welcome.html HTTP/1.1" 200 54

这是我的配置,显然没有按预期工作:

"/etc/apache2/sites-enabled/000-default"

<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass /webapp http://localhost:8080/webapp
ProxyPassReverse /webapp http://localhost:8080/webapp
RewriteEngine On
RewriteRule ^/$            /webapp/frontend/app/ [proxy]
RewriteRule ^/webapp/$     /webapp/frontend/app/ [redirect]
RewriteRule ^/webapp/app/$ /webapp/frontend/app/ [redirect]

(从这里开始 000-default 中的默认内容)

启用的模块:

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod rewrite

这是运行 Apache HTTPD 2.2.22 的 Ubuntu 12.10。

非常感谢您的帮助。

【问题讨论】:

    标签: apache mod-proxy


    【解决方案1】:

    我认为您担心的是您的访问日志在客户端字段中仍然包含 127.0.0.1。这不受ProxyPreserveHost 的影响;这是连接到 Apache 的网络端点的 IP 地址。对于来自另一台服务器的代理连接,这将始终是 localhost。

    另外,ProxyPreserveHost 是关于保留客户端发送的 Host 标头,而不是关于保留客户端的原始 IP。换句话说,这是关于信息朝着错误的方向发展的信息;它保留客户端发送的服务器名称,而不是客户端的 IP。

    我认为您的问题与this question 相同。我要补充一点,您可以在 CustomLog 配置中使用 %{X-Forwarded-For}i 在日志中记录 X-Forwarded-For 标头。

    【讨论】:

    • 谢谢。您提到的问题有一个投票答案,该答案链接到 Stack Overflow 之外的一篇文章,该文章实际上将 ProxyPreserveHost 作为一种解决方案,“因此开发人员不必最终使用 X-Forwarded-For 标头”。我是这样的开发人员,不得不使用非标准的东西让我感到难过。这么说,我在 Google 上搜索了 X-Forwarded-For,甚至 Wikipedia 都将其称为 de facto 标准,这比我最初认为的要好得多(Apache HTTPD 特有的东西,使我的 Web 应用程序成为 Apache HTTPD - 特定的)。
    • 我认为链接的博客文章只是写得很混乱。他说该指令可用于保留“远程主机而不是远程 ip”。在正常情况下,这将是同一事物的两个不同名称(通过 DNS),但我认为“远程主机”实际上是指“远程客户端发送的主机头”而不是远程客户端的主机名。但事实上,正如所写的那样,它相当令人困惑。
    • 除了对WebAuthenticationDetails.getRemoteAddress() 的现有检查外,我还对HttpServletRequest.getHeader("X-Forwarded-For") 的返回值进行了检查。因此,我的应用程序现在知道X-Forwarded-For。不是我最初所希望的,但仍然在工作。谢谢。
    • 根据提到的问题中的Steffen's answer,如果运行 apache httpd 2.4.6 或更高版本,apache 模块 mod_remoteip 似乎是 de faco 标准。
    猜你喜欢
    • 2011-02-27
    • 1970-01-01
    • 2013-03-13
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 2021-07-07
    • 2016-05-25
    相关资源
    最近更新 更多