我正在设置一个临时haproxy实例来帮助testing一个iphone应用程序的新后端。 我的计划是build立一个所有电话数据都要经过的代理,而不是与特定的应用程序或越狱程序相匹配,而是将其与主机头匹配,并将其转发给尚未生效的新服务器。 总之,我希望haproxy像一个开放的代理,除了一些特定的主机名。 匹配主机名和转发他们是完美的,但我似乎无法使开放代理位工作。 我在Ubuntu Precise上使用股票haproxy 1.4.18软件包进行股票全局设置,以及这些代理设置:
frontend myapp bind 0.0.0.0:8080 default_backend passthrough acl mydomain hdr_end(Host) .example.com use_backend front if mydomain backend front server front 127.0.0.1:80 backend passthrough server ???
所以前端位于8080端口,默认将请求推送到passthrough后端。 在此之前,它会检查acl以查看请求是否在我的域中的主机名,如果是,请将其转发到本地应用程序。
问题出在这个passthrough后端。 我希望它将请求直接传递到请求的主机,而不是本地端点。 我放在那里的configuration将不起作用,但我不知道应该说什么。 例如,如果我请求http://www.serverfault.com ,它不符合我的ACL,所以我希望它直接转发到serverfault,而不是本地服务器。 我不知道什么指令会在后端做这件事,或者是否有一些前端指令可以做到这一点。 就委托代理而言,这或多或less是一种无用的操作。
(是的,我知道开放的代理服务器是不好的;这是一个临时的testingconfiguration,每次只能交互运行几分钟)
更新 :我发现option http_proxy正是我所需要的,除了它不做DNS查找,只有显式的IP,所以像这样的后端几乎在那里:
backend passthrough option http_proxy option httpclose
我知道我可能可以使用别的东西,但我碰巧真的很喜欢haproxy!
没有办法configurationhaproxy为你做这个。 haproxy中的后端服务器必须明确命名。
难道你不能只用一个专门的DNS服务器来引导电话到正确的服务器?
您可以使用haproxy作为一个简单的http代理,具有以下configuration –
backend direct_forward option httpclose option http_proxy
你可以阅读更多关于这里