Apache ProxyPassReverse 带有来自请求的参数

Apache ProxyPassReverse 带有来自请求的参数

我遇到过一种情况,我想将以 /app 开头的所有内容重定向到内部服务器。基本上,这个想法是 Apache 将作为反向代理执行以下转换:

http://external/app -> http://myserver:1082/myapp

我能够使用 Rewrite 来完成此操作,如下所示:

  RewriteCond %{REQUEST_URI} ^/app
  RewriteRule ^/app(.*)$ http://myserver:1082/myapp$1 [L,P]

  ProxyPassReverse /app http://myserver:1082/myapp

一切正常。问题是现在我在 URL 上有一个语言前缀,但在应用程序上却没有。所以我需要以下重定向:

http://external/app -> http://myserver:1082/myapp
http://external/en/app -> http://myserver:1082/myapp
http://external/pt/app -> http://myserver:1082/myapp

虽然这可以通过重写来实现,但我对 proxyPassReverse 有一个问题。因为基本上我需要做一个动态的 ProxyPassRever,根据用户的实际 URL 请求,更改 Location

ProxyPassReverse /en/app http://myserver:1082/myapp
ProxyPassReverse /pt/app http://myserver:1082/myapp
ProxyPassReverse /app http://myserver:1082/myapp

它会是这样的

ProxyPassReverse ${preffix}/app http://myserver:1082/myapp

可以这样做吗?

答案1

反向代理路径

当在部分内部使用时,第一个参数被省略并且从中获取本地目录。

地点

URL 可以使用通配符。在通配符字符串中,? 匹配任意单个字符,* 匹配任意字符序列。还可以使用扩展正则表达式,并添加 ~ 字符。

因此您应该能够使用:

<Location /[a-z]+/app>
    ProxyPathReverse http://myserver:1082/myapp
</Location>

相关内容