Рейтинг:0

Не удается получить доступ к сервлету Tomcat с использованием прокси-сервера httpd ajp в Docker

флаг cn

Docker, httpd и tomcat для меня в новинку.

Что я хочу сделать: Доступ к сервлету tomcat через обратный прокси-сервер httpd ajp.

Я делаю два контейнера в одной мостовой сети, один запускает httpd, другой tomcat.

Проблема: Я не могу получить доступ к tomcat через httpd. httpd возвращает ошибку 403. Я могу получить доступ через порт 8080, если я открою его хосту. Я прочитал много статей, но не понимаю, что я делаю неправильно. Текущая конфигурация должна работать в соответствии с моим пониманием, но я наверняка что-то упускаю.

Скриншот страницы с ошибкой

Пожалуйста, дайте мне указатели, что я делаю неправильно.

Мои конфигурации и файлы докеров Пожалуйста, смотрите Git-репозиторий здесь. Я запускаю контейнер, сначала создавая образ, и запускаю его, следуя

# Запустить веб-контейнер
docker run -dit --name httpd.container -p 80:80 --network extope-network httpd-101-image
# Запустить контейнер AP
docker run -dit --name tomcat.container -p 8080:8080 --network extope-network --add-host=host.docker.internal:host-gateway tomcat-101-image
флаг in
Ошибка 403 исходит от tomcat, а не от httpd. Ваш httpd работает нормально.
Mirza Prangon avatar
флаг cn
Почему tomcat возвращает 403 при доступе через httpd? Так как доступ по порту 8080 работает нормально.
Gerard H. Pille avatar
флаг in
@GeraldSchneider, вы можете ошибиться с текущей конфигурацией.
Рейтинг:0
флаг in

Удалите кавычки из секрета в конфигурации httpd.

ProxyPass "/docs" "ajp://tomcat.container:8009/docs" secret=test_ajp_secret
ProxyPass "/manager/" "ajp://tomcat.container:8009/manager/" secret=test_ajp_secret

Дальше работает.

Mirza Prangon avatar
флаг cn
Это действительно решило мою проблему! Документы могут быть более четкими в этом отношении, говоря, что не следует использовать двойные кавычки.
Рейтинг:0
флаг in

Ваш server.xml перенаправляет трафик на порт 8443, но,

  1. не обрабатывает этот порт (обработчик закомментирован)
  2. контейнер не принимает трафик для этого порта.

В httpd.conf я вижу «Включить conf/httpd_extope.conf», но httpd_extope.conf нет. http_proxy.conf пытается связаться с контейнером через порт 8009, для которого также справедливы два приведенных выше замечания.

Mirza Prangon avatar
флаг cn
Спасибо, я попытался удалить строку порта перенаправления на коннекторе ajp, но проблема не устранена. Кстати, в конфигурации коннектора для порта 8080 также есть строка для перенаправления на тот же порт 8443, но я могу получить доступ через порт 8080. Почему это?
Gerard H. Pille avatar
флаг in
Порт 8080 обрабатывается правильно. См. другую проблему, которая у вас есть выше.
Mirza Prangon avatar
флаг cn
Извините, я изменил имена файлов, прежде чем поделиться. Имена файлов верны в моей среде. я исправлю это
Gerard H. Pille avatar
флаг in
Это не меняет проблемы с портом 8009.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.