Apache 代理重定向带有特定字符串的 URL

Apache 代理重定向带有特定字符串的 URL

我有一台运行 2 个应用程序的服务器。我使用的是公共 IP 地址,我想以某种方式解析 URL,如果出现特定文本,则调用将重定向到特定端口。在我的例子中,如果 URL 包含以下内容,我希望这样做:

  • /myapp1/a1-> 端口 82
  • /myapp2/a2-> 端口 81

例子:假设我的公网ip是publ,私网ip是priv,那么服务器应该这样解析下面的url:

http://publ/myapp1/a1/something->http://priv:82/myapp1/a1/something http://publ/myapp2/a2/something->http://priv:81/myapp2/a2/something

我正在尝试以某种方式配置 Apache 以提供反向代理。按照我在 site-availables 中的配置,还在 site-enabled 中添加了以下内容:

ServerName p.r.i.v

ProxyPassMatch "/myapp1/a1(.*)$" "http://p.r.i.v:82/myapp1/a1/$1"
ProxyPassReverse "/myapp1/a1(.*)$" "http://p.r.i.v:82/myapp1/a1/$1"

ProxyPassMatch "/myapp2/a2(.*)$" "http://p.r.i.v:81/myapp2/a2/$1"
ProxyPassReverse "/myapp2/a2(.*)$" "http://p.r.i.v:81/myapp2/a2/$1"

但重定向不起作用。我错过了什么?请考虑直接访问私有资源,这意味着http://priv:81/myapp2/a2/something,但http://publ/myapp2/a2/something尚未解决

任何帮助表示感谢 谢谢 Simone

答案1

问题已解决。代理 URL 中有一个编码字符,需要正确定义。在这种情况下,我在 ProxyPass 和 ProxyPassReverse 规则旁边添加了AllowEncodedSlashes On和。nocanon

谢谢西蒙娜

相关内容