0

有没有办法让 haproxy 或 squid 在执行传入请求的代理之前运行(bash)脚本(或另一个 http 请求)?

我想在 userX.mydomain.com 上托管一个 userX 特定的 http 服务器(和服务),但是这些服务可以运行或不运行,这取决于托管它们的机器的负载。

所以一天中的第一次,userX 访问了 url userX.mydomain.com,托管 serviceX 的 http 服务器必须启动。

多亏了 haproxy、xinetd、一些 bash 脚本和“HTTP Refresh 标头指令”,我已经设法在 http 服务器/服务启动后执行刷新。

但现在我想让它变得更好,让“http 服务启动”对请求 GET、PUT 或 POST 的客户端透明,并立即正确回复,即使在第一个http请求。

所以我需要启动服务,然后立即将请求代理到刚刚启动的服务。

我已经在 haproxy 中尝试了“http-check”和“check”选项,但我认为它们对我没有用,因为健康检查与 haproxy 的请求处理是异步的。相反,我需要为每个请求执行此脚本执行,然后在 haproxy 代理请求之前。

如果 squid 允许执行这种操作,我什至可以让 haproxy 将请求代理到 squid,然后,可以启动服务并代理请求

有人有实现它的想法吗?

提前致谢。

4

1 回答 1

0

这可以使用代理机器来完成 - https://github.com/mojombo/proxymachine

基本上proxymachine可以拦截HTTP请求,解析头部,运行任意Ruby代码,然后转发连接。

您需要在 proxymachine 获得连接之前终止 SSL - 例如使用 haproxy(具有新的 SSL 功能)。

于 2012-11-27T11:59:37.553 回答