HAproxy 与 RabbitMQ - 如何在 RabbitMQ 中获取客户端 IP 信息?

HAproxy 与 RabbitMQ - 如何在 RabbitMQ 中获取客户端 IP 信息?

我在 haproxy 服务器后面有一个 rabbitMQ 服务器。所有客户端都通过 HAproxy 连接到 RabbitMQ 并使用 TCP。

挑战在于当 rabbitMQ 连接显示所有连接都来自 Haproxy 服务器的同一 ip 时。

我怎样才能让客户端 IP 通过 HAproxy?

我尝试在 haproxy 配置中使用 transparent、send-proxy、send-proxy-v2 选项进行绑定。

我仍然无法将客户端 IP 传递到 RMQ 服务器。有什么想法吗?

答案1

您无法更改 haproxy 或 RabbitMQ 上的任何内容以获取客户端信息。就 RabbitMQ 而言,连接确实来自 haproxy。但您可以更改客户端连接以提供有关其自身的信息。

根据这个 GitHub 问题,你可以使用如下方法:

var amqp = require('amqplib');
amqp.connect('amqp://localhost', {clientProperties: {'IP': '10.0.0.3'}}).then(...);

根据您的库/客户端,它可能被称为client-propertiesclient_propertiesclientproperties

通过设置clientProperties,如果您查看连接列表或使用rabbitmqctl list_connections client_properties,则会显示真实IP。

相关内容