在 Mac 上打开端口 5672/tcp 以访问 RabbitMQ

在 Mac 上打开端口 5672/tcp 以访问 RabbitMQ

我在 Mac 上安装了最新版本的 RabbitMQ,并采用默认配置,当我从 localhost 访问它时,没有任何问题。但今天我在本地网络上构建了一台 Linux 机器,我无法从该机器远程连接到我的 RabbitMQ 服务器。我关闭了 Mac 上的所有防火墙以及所有可能阻止连接的设备。我完全能够连接到在不同端口上运行的 MongoDB 和任何其他应用程序,通过 ssh 连接到我的 macbook 等等,但我无法连接到 RabbitMQ(即使我更改了它运行的端口)。当我nmap在 Linux 上运行以检查我的 Mac 上是否打开了相应的端口时,我得到了以下信息:

>> nmap -p 5672 192.168.1.101 
Nmap scan report for 192.168.1.101
Host is up (0.00019s latency).
PORT     STATE  SERVICE
5672/tcp closed amqp

但是当我在 Mac 上执行同样的事情时:

>> nmap -p 5672 localhost
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00049s latency).
PORT     STATE SERVICE
5672/tcp open  amqp

我手动添加了规则ipfw,并将其添加rabbitmq-serversystem preferences -> security -> firewall -> advanced应用程序列表中以允许所有传入连接以防万一,但这没有帮助。知道如何强制端口打开以供本地网络中的另一台计算机进行网络访问吗?当我反过来做时(在 Linux 上安装 rabbitmq 并从 mac 连接到它),它运行良好。

答案1

当我通过 brew 在 Mac OS X 上安装 RabbitMQ 时,我遇到了同样的问题,即端口 5672 仅在本地主机上打开。

事实证明,该文件/usr/local/etc/rabbitmq/rabbitmq-env.conf包含一个条目,用于NODE_IP_ADDRESS仅将其绑定到本地主机。NODE_IP_ADDRESS从配置中删除该条目会将端口绑定到所有网络接口

答案2

守护进程似乎绑定了 127.0.0.1 而不是 0.0.0.0,您可以使用 netstat 工具检查它

答案3

对我有用的是将前面两个答案结合起来。

让你的/usr/local/etc/rabbitmq/rabbitmq-env.conf外表看起来像这样:

#rabbitmq-env.conf
CONFIG_FILE=/usr/local/etc/rabbitmq/rabbitmq
NODE_IP_ADDRESS=0.0.0.0
NODENAME=rabbit@localhost

如果我NODE_IP_ADDRESS完全删除该条目,rabbitmq 会给出错误。

答案4

您使用什么帐户连接 RabbitMQ。如果您使用的是访客帐户。这可能会有所帮助

https://www.rabbitmq.com/access-control.html

相关内容