Apache-2.2
Apache 反向代理背後的受 Cas 保護的站點
我的設置是:
- Cas伺服器(讓我們說 url
https://localhost:8443/cas-server/
)- 託管在 tomcat 伺服器上的受 cas 保護的網站,執行 cas-client(比如說 (
https://localhost:4448/myApp
)- 帶有 mod auth cas 和 proxy_http 的 httpd apache2,用作反向代理。(
http://localhost:80
)我想要做的是將反向代理配置為如下所示:
<Location /proxyTest > ProxyPass https://localhost:4448/myApp ProxyPassReverse https://localhost:4448/myApp </Location>
然後就可以寫了
https://localhost/proxyTest
代替
https://localhost:4448/myApp
這很好用,我被重定向了,我得到了 cas-ticket,我得到了身份驗證等。問題是 cas-login 頁面 url 顯示:
https://localhost:8443/cas-server/login?service=https%3A%2F%2Flocalhost%3A4448%2Fmyapp
登錄後,我的瀏覽器中顯示的網址是:
https://localhost:4448/myApp
所以重定向不能正常工作……在此過程中,我被發送回非代理 URL。最有可能由 cas-client 提供。如何設置這樣的代理以正常工作,以便在我獲得有效票證後所有這些都是透明的?
是否涉及使用tomcat的AJP?或者在cas-client中配置和使用神秘的cas代理回調的東西,我一直不明白怎麼用?別的東西?
ProxyPassReverse 指令用於重寫 Apache 在重定向等時返回的 URL。有關簡明說明,請參閱此問題。
我想你正在尋找的是
<Location /proxyTest> ProxyPass https://localhost:4448/myApp ProxyPassReverse https://localhost/proxyTest </Location>
在這裡您使用的是 http(s),因此不涉及 AJP。根據文件,AJP 不需要 ProxyPassReverse,所以你可以有類似的東西
<Location /proxyText> ProxyPass ajp://localhost:4448/myApp </Location>