我需要为apache设置反向代理,所以它的工作原理如下:
http://path1/serverA/xxx --> http://localhost:82/xxx
http://path2/serverA/xxx --> http://localhost:82/xxx
http://path3/serverA/xxx --> http://localhost:82/xxx
path1,path2,path3包含“/”,例如path1 = some / paths。我只是在这里使用path1,2,3。
如果我这样设置,它会起作用:
<Location /path1/serverA>
ProxyPass http://localhost:82/ smax=50 ttl=120
ProxyPassReverse http://localhost:82/j
</Location>
<Location /path2/serverA>
ProxyPass http://localhost:82/ smax=50 ttl=120
ProxyPassReverse http://localhost:82/j
</Location>
<Location /path3/serverA>
ProxyPass http://localhost:82/ smax=50 ttl=120
ProxyPassReverse http://localhost:82/j
</Location>
但它非常冗长。我看到apache文档http://httpd.apache.org/docs/2.2/mod/core.html#location显示Location可以采用正则表达式。所以我使用它但它不起作用。我的配置是
<Location ~ "/(path1|path2|path2)/serverA">
ProxyPass http://localhost:82/ smax=50 ttl=120
ProxyPassReverse http://localhost:82/j
</Location>
你能告诉我我错过的地方吗?
答案 0 :(得分:0)
&lt; Location~“/(path1 | path2 | path2)/ serverA”&gt;
“path1”,“path2”或“path3”中是否包含任何正则表达式特殊字符,例如:。 - +()$
如果是这样,他们需要使用:\
进行转义此外,如果路径(1,2,3)以“/”开头或结尾,则需要删除正则表达式字符串中相应的“/”,否则您将匹配“//”。
你也可以尝试使用它:
<LocationMatch ^/(path1|path2|path3)/serverA>