Apache 反向代理后面受 Cas 保护的站点

Apache 反向代理后面受 Cas 保护的站点

我的设置是:

  • Cas 服务器(比如说 url https://localhost:8443/cas-server/

  • 一个受 cas 保护的网站托管在 tomcat 服务器上,运行 cas 客户端(假设 ( https://localhost:4448/myApp)

  • 一个 httpd apache2,带有 mod auth cas 和 proxy_http,用作反向代理。(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

登录后,我的浏览器中显示的 URL 是:

https://localhost:4448/myApp

因此重定向无法正常工作……在某个时候,我被送回了非代理 URL。很可能是 cas-client 所为。我该如何设置这样的代理才能正常工作,以便一旦我获得有效票证,所有这些都是透明的?

是否涉及使用 tomcat 的 AJP?或​​者配置和使用 cas-client 中神秘的 cas 代理回调功能,我从来不明白如何使用?还有其他吗?

答案1

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>

相关内容