apache regex和proxypassmatch

时间:2018-10-24 18:12:44

标签: regex linux url-rewriting apache2 proxypass

我正在使用apache,需要像这样代理我的请求:

<LocationMatch "/133/2001">
      ProxyPass http://myserver.com/jtw/239.192.251.133:2001 
</LocationMatch>
<LocationMatch "/134/3001">
      ProxyPass http://myserver.com/jtw/239.192.251.134:3001 
</LocationMatch>
<LocationMatch "/135/5001">
      ProxyPass http://myserver.com/jtw/239.192.251.135:5001 
</LocationMatch>

....直到/ 255 / * 第一个子文件夹是IP,最后一个子文件夹是端口

有什么方法可以在一个LocationMatch和Proxypassmatch中做到这一点吗?

谢谢

Fabio。

1 个答案:

答案 0 :(得分:0)

如果您使用的是Apache 2.4.8及更高版本,则可以结合使用[1]和[2]:

<LocationMatch "^/(?<internalIP>\d+)/(?<internalPort>\d+)$">
    ProxysPass http://myserver.com/jtw/239.192.251.%{env:MATCH_INTERNALIP}:%{env:MATCH_INTERNALPORT}
</LocationMatch>

[1] https://serverfault.com/questions/423910/is-it-possible-to-get-the-matched-regex-from-within-the-apache-locationmatch-dir

[2] http://httpd.apache.org/docs/2.4/mod/core.html#locationmatch