Apache-2.4

Webapp 不使用代理

  • January 13, 2020

在我用來展示系統的單個伺服器上,我有一個在 apache2 上執行的靜態網站和一個在 tomcat 實例上執行的展示 Web 應用程序。直接訪問時兩者都工作正常。我已經設置了一個代理來將 Web 應用程序埠和凌亂的 URL 轉換為簡單的東西,但我得到的結果不一致。

伺服器是帶有 Apache2 的 Digital Ocean Ubuntu 18.04 droplet。我的主要網站使用 Drupal 並且有一個標準 URL https://example.com。Web 應用程序是一個由 Tomcat7 提供服務的大型企業系統,訪問地址為https://example.com:4444/webui/

目標是訪問https://example.com/my_demo.

代理以標準方式在apache2虛擬主機中定義

ProxyPass "/webui" "https://example.com:4444/webui/"
ProxyPassReverse "/my_demo" "https://example.com:4444/"

並且tomcat應用在server.xml中有一個代理入口

<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
       port="4444" maxThreads="200"
       scheme="https" secure="true" SSLEnabled="true"
       keystoreFile="/opt/webapp/keystore/webappKeystore" keystorePass="redactedPassword"
       clientAuth="false" sslProtocol="TLS"
       proxyName="example.com"
       proxyPort="443"/>

這似乎有效,但還不夠好。

我遇到的問題是 Web 應用程序始終無法使用代理。它是用 ZK 編寫的,並且混合了使用應用程序上下文路徑的資源引用,例如(“/webui/images/theimage.jpg”)和其他使用 ZK 桌面上下文的資源引用,最終可以發送“images/theimage.jpg” ”。因此,Web 應用程序在某些地方似乎缺少按鈕圖像,但在其他地方卻沒有。

此外,在註銷時,webapp 將瀏覽器重定向回 tomcat 地址,但連結被破壞並以 /webui/index 結束並出現 403 錯誤,而不是 /webui/index.zul,就好像它被錯誤地重寫了一樣。

同樣,當從 tomcat 伺服器執行而不通過代理時,Web 應用程序工作得很好。

我正在尋找有關如何調試它並使 tomcat Web 應用程序在代理下工作的建議。我已經嘗試使用 dump_io 和重寫日誌,但除了上面提到的問題之外,看不到錯誤發生在哪裡。

還有其他一些我應該檢查的元素嗎?

任何建議,將不勝感激。

您的問題歸結為重寫來自應用程序伺服器的絕對請求 URI。這可以做兩件事:

  1. Apache2 可以重寫代理內容中的所有 URI。擷取所有可能出現 URI 的位置是相當困難的。
  2. Tomcat7 可以使用與 Apache 伺服器相同的絕對請求 URI。

我建議第二種方式,因為它是最簡單的一種。你應該:

  1. 將 Web 應用程序部署在/my_demo而不是/webui. 這可能就像重命名webapps/webuiwebapps/my_demoin一樣簡單CATALINA_BASE
  2. 將 Apache 配置為代理/my_demo/https://example.com:4444/my_demo/
ProxyPass "/my_demo/" "https://example.com:4444/my_demo/"
ProxyPassReverse "/my_demo/" "https://example.com:4444/my_demo/"

PS:對 Tomcat 使用 HTTPS 恕我直言,只需要配置一個 HTTP 連接器並更改securescheme屬性,以便 Tomcat 知道它是通過 HTTPS 代理的:

<Connector port="4444"
          scheme="https" secure="true"
          proxyName="example.com"
          proxyPort="443"/>

並在指令中更改https為。http``ProxyPass

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