RabbitMQ 遠程 IP 訪問 解決辦法 -摘自網(wǎng)絡
剛剛安裝的RabbitMQ-Server-3.3.5,并且也已經(jīng)開啟了Web管理功能,但是現(xiàn)在存在一個問題:
出于安全的考慮,guest這個默認的用戶只能通過http://localhost:15672 來登錄,不能使用IP地址登錄,也就是不能遠程訪問,這對于服務器上沒有安裝桌面的情況是無法管理維護的。
要解決這個問題需要配置遠程登錄權(quán)限,這里通過配置文件來實現(xiàn)遠程訪問。
這里主要介紹Unix和Windows的配置文件修改。
一、Windows
Windows環(huán)境下默認配置文件為目錄/%RabbitMQ Server%/rabbitmq_server-3.3.5/etc下的rabbitmq.config.example文件,我們可以直接在這個文件中修改(可以不用去設置環(huán)境變量了),也可以自己再新建一個rabbitmq.config文件,然后把這個文件路徑配置到環(huán)境變量中,這里介紹就直接修改rabbitmq.config.example文件。
注意:修改之前,需要先停止RabbitMQ服務!!不然是不能保存的?。?!
配置之前需要先添加用戶,用于外網(wǎng)的訪問,可以使用命令行來實現(xiàn)添加用戶,需要在RabbitMQ的安裝目錄sbin目錄下執(zhí)行:
|
1
|
duanwf@master:/opt/rabbitmq_server-3.3.5/sbin$ rabbitmqctl add_user admin admin |
也可以通過web管理頁面來添加用戶和密碼,使用guest登錄web管理頁面http://localhost:15672,進入“admin”標簽頁,然后點擊“Add a user ”,輸入對用的帳號密碼,然后選擇用戶角色(一定要選擇):
為了授權(quán)該用戶對VirtualHost"/" 的訪問,用戶添加之后,需要對該用戶進行授權(quán),不然運行會出現(xiàn)錯誤:
|
1
|
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=403, reply-text=ACCESS_REFUSED - access to queue 'hello' in vhost '/' refused for user 'admin', class-id=50, method-id=10), null, ""} |
詳細錯誤日志為:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
java.io.IOException at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106) at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102) at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124) at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:766) at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:61) at com.asiainfo.mq.rabbitmq.rabbitmqtest.SendTest.main(SendTest.java:29)Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=403, reply-text=ACCESS_REFUSED - access to queue 'hello' in vhost '/' refused for user 'admin', class-id=50, method-id=10), null, ""} at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67) at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33) at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:343) at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:216) at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118) ... 3 moreCaused by: com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=403, reply-text=ACCESS_REFUSED - access to queue 'hello' in vhost '/' refused for user 'admin', class-id=50, method-id=10), null, ""} at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:473) at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:313) at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:144) at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:91) at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:533) |
操作過程為:在Admin標簽頁下點擊新增的用戶"admin",進入授權(quán)頁面,默認直接點擊"set permission"即可:
用戶以及授權(quán)添加完成之后,在rabbitmq.config.example文件中,添加以下內(nèi)容,保存后重啟RabbitMQ服務:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
……[ {rabbit, [%% %% Network Connectivity %% ==================== %% %% By default, RabbitMQ will listen on all interfaces, using %% the standard (reserved) AMQP port. %% {tcp_listeners, [5672]}, {loopback_users, ["admin"]},…… ]}]. |
在瀏覽器中輸入http://192.168.0.124:15672實現(xiàn)通過IP地址訪問,成功登錄:
測試用例見博文“RabbitMQ遠程調(diào)用測試用例”
二、Unix
unix環(huán)境下,配置文件在%/rabbitmq_server-3.3.5%/etc/rabbitmq/rabbitmq.config.example
|
1
|
root@master:/opt/rabbitmq_server-3.3.5/etc/rabbitmq# vi rabbitmq.config.example |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
%% -*- mode: erlang -*-%% ----------------------------------------------------------------------------%% RabbitMQ Sample Configuration File.%%%% See http://www.rabbitmq.com/configure.html for details.%% ----------------------------------------------------------------------------[ {rabbit, [%% %% Network Connectivity %% ==================== %% %% By default, RabbitMQ will listen on all interfaces, using %% the standard (reserved) AMQP port. %% {tcp_listeners, [5672]}, {loopback_users, ["admin"]}, …… ]}]. |
參考地址:
http://blog.haohtml.com/archives/15249








浙公網(wǎng)安備 33010602011771號