秋yun 2024-05-23 12:07 采纳率: 0%
浏览 10

HAproxy四层代理,匹配不同的域名给不同的ip。

HAproxy四层代理,匹配不同的域名给不同的ip。
例如匹配sgs.prod.com域名给ip192.168.1.12
匹配
sgssf.prod.com域名给ip192.168.2.11。代理的是emqx:1883端口

请给出详细的配置文件和说明

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-23 12:07
    关注

    引自免费微信小程序:皆我百晓生

    在HAProxy中,四层(TCP)代理的配置通常不直接处理域名,而是基于源IP地址、端口号或其他连接信息进行转发。不过,通过一些技巧,我们可以实现根据域名进行转发的功能。这通常涉及到使用haproxy的HTTP检查模块(http-request),结合后端服务器的URL重写功能。这里是一个基本的示例配置,它将根据请求头中的Host字段来决定转发到哪个后端服务器。

    首先,确保你的HAProxy支持HTTP检查模块,这通常在默认安装中已经包含。如果没有,你需要重新编译或安装带有--with-http选项的HAProxy。

    然后,创建一个名为haproxy.cfg的配置文件,并添加以下内容:

    global
        log 127.0.0.1 local0
        log 127.0.0.1 local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
        user haproxy
        group haproxy
        daemon
    
    defaults
        log global
        mode tcp
        option clitcpka
        retries 3
        timeout connect 5000
        timeout client 50000
        timeout server 50000
    
    frontend ft_prod_com
        bind *:443 ssl crt /path/to/your/cert.pem
        mode tcp
        option httplog
        default_backend be_prod_com
    
    backend be_prod_com
        balance roundrobin
        option forwardfor
        server sgs_prod com ip192.168.1.12:1883 check
        server sgs_ssf_prod_com ip192.168.2.11:1883 check
    

    这个配置做了以下事情:

    • 定义了一个前端监听器ft_prod_com,监听所有IP的443端口,并且启用SSL。你需要替换/path/to/your/cert.pem为你的证书路径。
    • 使用mode tcp指定这是四层代理。
    • option httplog使得HAProxy记录HTTP日志,尽管这是一个四层代理,但这样可以更容易地查看请求头。
    • 将流量路由到后端服务器池be_prod_com

    后端服务器池be_prod_com:

    • 使用balance roundrobin设置负载均衡策略为轮询。
    • option forwardfor保留原始客户端IP地址。
    • 添加两个服务器,分别对应sgs.prod.comsgssf.prod.com。这些服务器应该在你的应用服务器上运行Emqx,并且配置好URL重写规则,以便根据请求的Host头来正确处理连接到1883端口的 MQTT 请求。

    注意:为了使此配置生效,你的应用服务器(运行Emqx的服务器)必须能解析Host头并根据它来决定如何处理连接。这可能需要在Emqx之外的其他软件(例如Nginx或Apache)中进行配置,或者如果你的Emqx版本支持,可以直接在Emqx内部配置。然而,Emqx本身并不直接支持根据Host头转发连接,因此这种方法可能不是最佳实践。一种更好的方法可能是使用七层(HTTP)代理,但是在这个场景下,你可能需要先将MQTT流量转换为HTTP明文或WebSockets,然后再由HAProxy转发。

    要启动HAProxy,执行以下命令:

    sudo haproxy -f /etc/haproxy/haproxy.cfg
    

    请根据实际情况修改配置文件路径。如果HAProxy已经启动,你可能需要先停止它再重启,以应用新的配置。同时,别忘了根据实际环境调整证书路径和其他细节。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月23日

悬赏问题

  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。
  • ¥20 在easyX库下编写C语言扑克游戏跑的快,能实现简单的人机对战