使用“重定向”和“ProxyPass”

时间:2014-10-27 19:43:30

标签: apache proxypass

我想强制我的用户使用https登录。 不幸的是,“重定向”指令似乎不能与“ProxyPass”结合使用

<VirtualHost *:80>
  ServerName www.domain.com
  # This does not work
  Redirect permanent /app/login.jsp https://www.domain.com/app/login.jsp
  ProxyPass         /app    http://localhost:8080/app
  ProxyPassReverse  /app    http://localhost:8080/app
</VirtualHost>

有什么想法吗? 感谢。

3 个答案:

答案 0 :(得分:8)

在这里找到这个问题的答案:

https://serverfault.com/questions/605931/can-you-use-redirect-and-proxypass-at-the-same-time

需要在其他proxypass指令之前添加以下内容:

ProxyPass /app/login.jsp!

答案 1 :(得分:5)

我有一个更复杂的用例,需要使用ProxyPassMatch。它有点像这样:

ProxyPassMatch ^/app(/(index.html)?)?$ !
RedirectMatch ^/app(/(index.html)?)?$ /path/to/login/page.html

ProxyPass /app/* http://remote-server/app
ProxyPassReverse /app/* http://remote-server/app

我必须使用ProxyPassMatch,因为ProxyPass会执行前缀匹配。您需要匹配字符串结尾,因此ProxyPassMatch具有$正则表达式元字符是至关重要的。

此处,RedirectMatch的使用方式相同,因为Redirect也会执行前缀匹配。这两个指令也具有很好的对称性。

答案 2 :(得分:0)

正如您所指出的那样,您拥有位置ProxyPass的{​​{1}}这一事实意味着任何击中该路径的内容都将受代理人的约束。

您可以省略使用/app并使用ProxyPass和代理RewriteRule标记执行代理:

[P]