URL的Apache HttpD ProxyPass动态主机名

问题描述

我正在使用Apache作为反向代理。

这是我的用例: 我创建了一个/nm URL,后跟NodeAddressURL

因此,假设我想从节点IP 1.2.3.4:8080获得响应,URL为/describe,我到Apache代理的URL将为/nm/1.2.3.4:8080/describe,并且我希望Apache反向代理能够获得http://1.2.3.4:8080/describe

的回复
<LocationMatch "^/nm/(?<nodeaddress>.*:8080)/(?<url>.*)">
  ProxyPassInterpolateEnv On
  ProxyPass "http://%{env:MATCH_NODEADDRESS}/%{env:MATCH_URL}" connectiontimeout=1800 timeout=1800
</LocationMatch>

但是,这似乎不起作用。 Apache服务器无法使用此配置启动,并且显示无效的URL。

我在Nginx中实现了类似的目的,但想使其在Apache中工作。

location ~* ^(\/nm\/(?<nodeAddress>.*:8080)\/(?<url>.*)$) {
        resolver 127.0.0.1;
        resolver_timeout 1s;
        proxy_pass http://$nodeAddress/$url$is_args$args;
        proxy_redirect ~*http(s)?:\/\/(.*:8080)\/(.*) /nm/$2/$3;
}

在Nginx中,我也可以使用?args传递$is_args$args参数。我想用Apache反向代理来实现类似的目的。在Nginx中,我还可以将proxy_redirect的302重定向重新写回到/nm 我想在Apache代理中获得类似的结果。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)