我在 Mac 上使用預設配置安裝了最新版本的 RabbitMQ,當我從本機主機存取它時,沒有任何問題。但今天我在本機網路上建置了一台 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-server
到system 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。如果您使用的是訪客帳戶。這可能有幫助