我正在尝试出于测试目的设置apache服务器。目标是模拟负载均衡器。我们试图模拟的部分只是简单地接受客户端安全的httprequest,然后使用proxypass将其(通过不安全的http)传递给正确的服务器。这一切都100%有效。
问题是这样的:我想将此“负载均衡器”用于多个开发环境。为了能够测试应用程序的服务器端,我希望proxypass使用一个可变URL传递给它,即客户端IP。这将需要在proxypass规则中使用可变URL。我已经找到了变量REMOTE_ADDR,但是我似乎无法在proxypass规则中使用它。我首先尝试了apache网站告诉我使用的语法,但是没有用(获取http://REMOTE_ADDR/foobar/的DNS查找失败)。我知道我必须对Interpolate做些事情,但是我似乎无法弄清楚到底是什么。
该行完成了应做的工作,因此服务器运行良好:
ProxyPass/http://localhost:81/
这些是我尝试过的规则(使用变量),但失败了。
ProxyPass/http://$ {REMOTE_ADDR}:81/
错误:[客户端127.0.0.1]代理:/返回的$ {remote_addr}的DNS查找失败
ProxyPass/https://% {REMOTE_ADDR} s/
错误:[客户端127.0.0.1]代理:DNS查询失败,原因是:/返回的%{remote_addr} s
ProxyPassInterpolateEnv开启
...
ProxyPass/http://$ {REMOTE_ADDR}:81/插值
错误:[客户端127.0.0.1]解析URL//:81时出错:无效的主机/端口
任何人有什么主意吗?
最佳答案
您可以使用[P]代码用mod_rewrite规则替换Proxypass指令,P表示代理。
Mod_rewrite将让您做更多特定的事情。
关于apache - Apache proxypass使用带插值的可变URL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4583235/