通过跳转框将http请求转发到haproxy

时间:2016-08-29 14:04:31

标签: http nginx haproxy

标题正是我认为我需要的

我正在寻找一种通过跳转框网关服务器转发请求的简洁方法。网关服务器是一个可以访问生产的跳转框。跳转框可以访问我需要的服务,我可以通过网络浏览器访问跳转框。

可以通过haproxy和一些防火墙规则通过curl从跳转框的cli访问这些http服务。目前,请求将转到vip地址,这是另一组正在使用后端的HAproxies,具体取决于请求的Host头部是什么。一对一服务一个接一个。

有没有办法让我干净地公开这些服务,以便我可以以某种方式从跳转框中监听nginx实例请求它们,然后将它们传递给具有相应主机头的haproxy,然后返回到我的Web浏览器?

有更简单,更清洁或更快的方法吗?

路径又是:

我可以访问跳转框网页

这部分有效 内部网络> nginx上的jumpbox webui>链接到服务网站

nginx实例基本上是一个平面的html页面,其中包含指向其他页面的链接。如果此处的链接可以转发或者请求返回到nginx以便通过haproxy,我更喜欢。

jumpbox可以访问prod

这部分有效 内部网络> jumpbox haproxy>生产haproxy>监听请求并使用基于主机头的后端

但我没有办法直接从我的网络浏览器访问它。

从跳跃框中可以使用

####### myService ########

  acl acl-myservice1 hdr_beg(host) -i myservice1.mycompany.com
  use_backend myservice1 if acl-myservice1 

  acl acl-myservice2 hdr_beg(host) -i myservice2.mycompany.com
  use_backend myservice2 if acl-myservice2

## BACKENDS
  backend myservice1
  server prdproxy-vip01                myservice1.mycompany.com:80

  backend myservice2
  server prdproxy-vip01                myservice2.mycompany.com:80

prdproxy-vip正在根据名称myservice1.mycompany.com myservice2.mycompany.com向正确的方向移动东西。另请注意,这些名称是通过hosts文件解析的。

1 个答案:

答案 0 :(得分:0)

我实际上已经解决了这个问题,但感觉就像这样一个黑客,所以我愿意接受改进它的建议。

  1. jumpbox webui链接指向jumpboxip / service1
  2. nginx使用proxy_pass将path_beg / service1传递给haproxy
  3. haproxy将/ service1的请求路由到生产网络
  4. 生产haproxies为/ service1提供了acl并选择了合适的后端
  5. 不是因为serivce1是一个webfront,它使自己对所有静态内容的请求所以我必须提供2个规则才能在haproxies中工作

    • jumpbox haproxy
      • jumpboxip /服务1
      • jumpboxip /静态
      • 选择生产后端
    • 生产haproxy
      • jumpboxip / service1 我必须用后端的/替换/ service1
      • jumpboxip / static
      • 选择服务后端