我有一台运行 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
谢谢西蒙娜