Apache、Tomcat 5 和 HTTP 基本身份验证问题

Apache、Tomcat 5 和 HTTP 基本身份验证问题

我已经设置了一个 Tomcat,其中包含一个 Web 应用程序,该 Web 应用程序在其某些 URL 中使用 http basic auth。Tomcat 前面有一个 Apache 服务器。

我已经将 Apache 设置为这样的代理(所有流量都应直接转到 tomcat):

/etc/httpd/conf.d/proxy_ajp.conf

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/

Tomcat 的根目录下安装了一个 Web 应用程序(ROOT.war),因此我应该能够使用http://本地主机/访问我的 Web 应用。但是它无法使用 http basic auth。

问题是,在我尝试访问受 HTTP 基本身份验证保护的 URL 之前,一切正常。未经身份验证的 URL 工作正常。

当通过 apache 访问此 URL 时,我收到来自 Apache 的错误消息。如果我直接从 tomcat 访问相同的 URL,则一切正常。

我在 Apache 错误日志中看到了这个:

[Wed Sep 01 21:34:01 2010] [error] proxy: dialog to [::1]:8009 (localhost) failed

访问日志如下所示:

::1 - - [01/Sep/2010:21:34:01 +0300] "GET /protected_path/ HTTP/1.0" 503 360 "-" "w3m/0.5.2"

我在用:

  • Fedora 版本 13(Goddard)
  • httpd-2.2.16-1.fc13.x86_64
  • tomcat5-5.5.27-7.4.fc12.noarch

基本身份验证是在 webapp 中实现的(而不是在 Apache 或 Tomcat 中)。webapp 实际上是在 Scala/Lift 中实现的,但这并不重要。如果我直接访问 tomcat,身份验证就可以正常工作。

我从 Apache 收到的错误消息。标题很奇怪未授权并不是内部错误

未授权

由于维护停机或容量问题,服务器暂时无法满足您的请求。请稍后重试。

Apache/2.2.16 (Fedora) 服务器位于 my.server.name.com 端口 80

Apache 可能看到了其他东西200 正常响应并认为这是一个错误,而实际上它应该传递接收到的401 未授权直接响应浏览器。如果这是问题,该如何修复?

答案1

您如何配置基本身份验证?如果您正在使用<Directory>指令,请尝试更改为<Location>。(因为代理请求实际上不会触及 Apache 目录。)

编辑:我假设你有:LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

相关内容