Назад | Перейти на главную страницу

Apache, Tomcat 5 и проблема с базовой аутентификацией HTTP

Я установил Tomcat с веб-приложением, которое использует базовую аутентификацию http в некоторых своих URL-адресах. Перед 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 (ROOT.war) установлено веб-приложение, поэтому я могу использовать http: // localhost / для доступа к моему веб-приложению. Но он не работает с базовой аутентификацией http.

Проблема в том, что все работает до тех пор, пока я не попытаюсь получить доступ к URL, защищенному базовой аутентификацией HTTP. URL-адреса без аутентификации работают нормально.

При доступе к этому URL-адресу через apache я получаю сообщение об ошибке от Apache. Если я обращаюсь к одному и тому же URL-адресу напрямую из tomcat, все работает нормально.

Я получаю это в журнале ошибок 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"

Я использую:

Базовая аутентификация реализована в веб-приложении (не в Apache или Tomcat). Веб-приложение фактически реализовано на Scala / Lift, но это не имеет значения. Auth работает, если я напрямую обращаюсь к tomcat.

Сообщение об ошибке, которое я получаю от Apache. Любопытно, что название Неавторизованный и нет Внутренняя ошибка:

Неавторизованный

Сервер временно не может обработать ваш запрос из-за простоя в обслуживании или проблем с производительностью. Пожалуйста, попробуйте позже.

Сервер Apache / 2.2.16 (Fedora) на порт 80 my.server.name.com

Возможно, Apache видит что-то еще, кроме 200 ОК ответ и думает, что это ошибка, когда он действительно должен передать полученный 401 Неавторизованный ответ прямо в браузер. Если это проблема, как ее исправить?

Как вы настраивали базовую аутентификацию? Если вы используете <Directory> Директивы, попробуйте изменить на <Location> вместо. (поскольку прокси-запросы фактически не касаются каталога Apache ..

Изменить: я предполагаю, что у вас есть: LoadModule proxy_ajp_module modules/mod_proxy_ajp.so