Apache-2.4

無法在 Docker 中使用 httpd ajp 代理訪問 Tomcat servlet

  • October 8, 2021

Docker、httpd 和 tomcat 對我來說是新的。

**我想做的:**通過httpd ajp反向代理訪問tomcat servlet。

我在同一個橋接網路下製作兩個容器,一個執行 httpd,另一個執行 tomcat。

**問題:**我無法通過httpd訪問tomcat。Httpd 返回 403 錯誤。如果我將它暴露給主機,我可以通過埠 8080 訪問它。我讀過很多文章,但不明白我做錯了什麼。根據我的理解,目前配置應該可以工作,但我肯定遺漏了一些東西。

錯誤頁面截圖

請給我指點我做錯了什麼。

我的配置和 dockerfiles 請在此處查看 Git 儲存庫。我通過首先創建圖像來執行容器並按照以下方式執行

# Start web container
docker run -dit --name httpd.container -p 80:80 --network extope-network httpd-101-image
# Start AP container
docker run -dit --name tomcat.container -p 8080:8080 --network extope-network --add-host=host.docker.internal:host-gateway tomcat-101-image

從您的 httpd 配置中的密鑰中刪除引號。

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

之後它工作。

您的 server.xml 將流量重定向到埠 8443,但是,

  1. 不處理該埠(處理程序被註釋掉)
  2. 容器不接受該埠的流量。

在 httpd.conf 中,我看到“包含 conf/httpd_extope.conf”,但沒有 httpd_extope.conf。http_proxy.conf 嘗試聯繫 8009 埠的容器,上面兩條說明也有效。

引用自:https://serverfault.com/questions/1079955