Apache-2.4

Apache 反向代理配置不適用於位置 /#/

  • August 10, 2019

我正在嘗試讓 apache 2.4 反向代理 (RHEL 7.7) 與具有硬編碼路徑的應用程序一起使用,這使得我的反向代理配置非常具有挑戰性。這個 serverfault 連結(如何使用反向代理正確處理相對 url)非常棒,特別是解決方案#3 放置一堆位置(已被硬編碼)。我的代理執行路徑來區分應用程序(www.example.com/app1 和 www.example.com/app2)。在這個例子中,/app2 硬編碼了一堆目錄,比如 /static 和 /api。將這些帶有 ProxyPass 和 ProxyPassReverse 的位置放入其中效果很好,並且該站點可以正常執行。

但是,無論出於何種原因,它們也對 /#/ 進行了硬編碼,我在某些地方的 href 連結中看到了它們。所以,我按照模式定義了 /#/ 的位置。但是,它不起作用。無論出於何種原因,當我點擊該連結時,它不會將其定向到 app2.internal.example.com 伺服器,而是提供在 www.example.com/ 處響應的我的首頁。在 URL 中,我看到它顯示 www.example.com/#/SOMEWHERE,但顯然沒有到達 app2。配置文件如下。/#/是不能使用的特殊位置嗎?有什麼解決方案嗎?提前致謝。

<Location /app2/>
 ProxyPass https://app2.internal.example.com/
 ProxyPassReverse https://app2.internal.example.com/
 Header add referer "https://app2.internal.example.com/"
 RequestHeader set referer "https://app2.internal.example.com/"
</Location>

<Location /static/>
 ProxyPass https://app2.internal.example.com/static/
 ProxyPassReverse https://app2.internal.example.com/static/
 Header add referer "https://app2.internal.example.com/"
 RequestHeader set referer "https://app2.internal.example.com/"
</Location>

<Location /api/>
 ProxyPass https://app2.internal.example.com/api/
 ProxyPassReverse https://app2.internal.example.com/api/
 Header add referer "https://app2.internal.example.com/"
 RequestHeader set referer "https://app2.internal.example.com/"
</Location>

<Location /#/>
 ProxyPass https://app2.internal.example.com/#/
 ProxyPassReverse https://app2.internal.example.com/#/
 Header add referer "https://app2.internal.example.com/"
 RequestHeader set referer "https://app2.internal.example.com/"
</Location>

URL 中的#描述 URL 片段,URL 的一部分指示文件中的位置,一旦載入文件,瀏覽器將滾動到該位置。

一些 JavaScript 庫濫用 URL 片段在客戶端傳遞資訊以支持單頁應用程序的各種功能。這不再流行(而且從來都不是一個好主意),並且需要更新此類應用程序以使用 History API 並適當地更改這些 URL 以不再使用片段。您的開發人員應該在幾年前這樣做。

一開始這是一個壞主意有幾個原因,但最重要的是,對於您的情況,URL 片段是嚴格的客戶端,永遠不會傳遞給伺服器。如果您有 URL http://www.example.com/#/,則路徑是/,這就是伺服器看到的所有內容。它永遠不會看到,#/因為這些只是客戶端。純 HTTP 無法將其發送到伺服器,因此您無法在Location. 或者別的什麼。

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