ProxyPass 無法與 ProxyPassMatch 搭配

ProxyPass 無法與 ProxyPassMatch 搭配

因此,目前我在 Oracle HTTP Server 實例上配置了一個具有 ProxyPass 的虛擬主機,如下所示:

ProxyPass ^/test/home/ https://example.com/
ProxyPassMatch ^/test/home/(.*)$ https://example.com/$1
ProxyPassReverse ^/test/home/(.*)$ https://example.com/$1

當我嘗試存取https://mywebsite.com/test/home/<url_from_other_server>該請求時,該請求似乎按預期工作。然而,當我嘗試訪問它時https://mywebsite.com/test/home/,它並沒有代理我,https://example.com/而是返回 404。

通配符ProxyPassMatch似乎適用於我嘗試存取的所有子網址,但常規ProxyPass關鍵字則不然。

我也嘗試ProxyPass完全刪除,並且在嘗試訪問 /test/home/ 時遇到相同的 404 錯誤

有誰知道是什麼導致了這種奇怪的行為?

謝謝。

答案1

你的正規表示式不太正確。*表示“零次或多次出現”,因此https://mywebsite.com/test/home/與其匹配。更改(.*)(.+),表示“出現一次或多次”。那麼您的 ProxyPassMatch 不應再與該 URL 相符。

或者完全刪除 ProxyPassMatch 行,它幾乎沒有用,url 會像 ProxyPass 行一樣自動處理。

ProxyPass /test/home/ https://example.com/
ProxyPassReverse /test/home/ https://example.com/

答案2

該問題已解決。此特定問題的正確配置如下:

ProxyPass /test/home(.*)$ https://example.com/$1
ProxyPassReverse /test/home(.*)$ https://example.com/$1

刪除斜線並添加通配符使我們能夠代理以下任何內容/test/home

謝謝大家的意見。

相關內容