服务器解决方案,转发HTTP流量

服务器解决方案,转发HTTP流量

我正在寻找一种在服务器上重定向 GET/POST HTTP 请求的解决方案。

最简单的部分是端口转换和主机名重定向(HTTP 3xx 重定向):当我在 DMZ 中的服务器在端口 7070 上接收流量时(http://mydmz.server.com:7070),它将流量重定向到公共网络服务器(http://liveupdate.symantecliveupdate.com在默认端口 80 上)

但它还需要动态修改请求标头:

  • /clu-产品应该从 URI 中删除
  • 主机:mydmz.server.com应替换为主机:liveupdate.symantecliveupdate.com

我可以在服务器上使用什么工具、解决方案来侦听端口 7070 并执行以下操作?负载均衡器、HTTP 代理?

在此输入图像描述 在此输入图像描述

答案1

我认为你可以使用 HAProxy 来实现这一点。

  • 设置为httpd模式监听7070/tcp端口。
  • 使用 haproxy 替换值修改主机标头。在你的情况下,它可能是这样的:

    http-request replace-value Host mydmz.server.com:(.*) liveupdate.symantecliveupdate.com:\1
    
  • 使用 haproxy url 重写剥离 URI。在你的情况下,这可能是这样的:

    reqrep ^([^\ ]*\ /)clu-prod[/]?(.*)     \1\2
    

通过这些设置,您的 HAProxy 配置可能看起来像这样(这是从 CentOS 7 中的 HAProxy 默认配置快速修改的,这是不是彻底测试):

    global
   log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend  main *:7070
    default_backend             app

backend app
    http-request replace-value Host mydmz.server.com:(.*) liveupdate.symantecliveupdate.com:\2
    reqrep ^(.*)/clu-prod(.*) \1/\2
    balance     roundrobin
    server  app1 liveupdate.symantecliveupdate.com:80 check

您可能可以使用的其他选项是鱿鱼代理http://www.squid-cache.org/

相关内容