RabbitMQ 远程 IP 访问 解决办法 -摘自网络

本文介绍了如何配置RabbitMQ以允许远程访问。通过修改配置文件并添加用户及权限,可以实现非本地用户通过IP地址登录RabbitMQ的Web管理界面。

刚刚安装的RabbitMQ-Server-3.3.5,并且也已经开启了Web管理功能,但是现在存在一个问题:

出于安全的考虑,guest这个默认的用户只能通过http://localhost:15672 来登录,不能使用IP地址登录,也就是不能远程访问,这对于服务器上没有安装桌面的情况是无法管理维护的。

wKiom1QC9yfhqQPUAANwvmRkMwc639.jpg

 

wKioL1QC-GXwUBOuAAE9tNpxww8295.jpg    

    要解决这个问题需要配置远程登录权限,这里通过配置文件来实现远程访问。

    这里主要介绍Unix和Windows的配置文件修改。

    

一、Windows

    Windows环境下默认配置文件为目录/%RabbitMQ Server%/rabbitmq_server-3.3.5/etc下的rabbitmq.config.example文件,我们可以直接在这个文件中修改(可以不用去设置环境变量了),也可以自己再新建一个rabbitmq.config文件,然后把这个文件路径配置到环境变量中,这里介绍就直接修改rabbitmq.config.example文件。

    注意:修改之前,需要先停止RabbitMQ服务!!不然是不能保存的!!!

 

    配置之前需要先添加用户,用于外网的访问,可以使用命令行来实现添加用户,需要在RabbitMQ的安装目录sbin目录下执行:

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 ”,输入对用的帐号密码,然后选择用户角色(一定要选择):

wKioL1QDOQ6BVXbtAABuhvQGwIA911.jpg

    为了授权该用户对VirtualHost"/" 的访问,用户添加之后,需要对该用户进行授权,不然运行会出现错误:

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  more
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.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",进入授权页面,默认直接点击"set permission"即可:

wKiom1QFIdDA9SyuAAC9TH3W7Zw890.jpg

    用户以及授权添加完成之后,在rabbitmq.config.example文件中,添加以下内容,保存后重启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实现通过IP地址访问,成功登录:

wKioL1QDPCDxtRzmAAFwF5CGtfs534.jpg

 

 

    测试用例见博文“RabbitMQ远程调用测试用例

 

二、Unix

    unix环境下,配置文件在%/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" ]},
    ……
    ]}
].

 

wKiom1QDXFryE8f1AADH6zaX7j4156.jpg

wKioL1QDXXOgFlTKAAGGkSODgg0883.jpg

 

 

 

参考地址:

http://blog.haohtml.com/archives/15249

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

https://www.rabbitmq.com/configure.html

### 配置 RabbitMQ 实现远程访问 为了使 RabbitMQ 支持远程访问,需修改配置文件并设置相应的权限。默认情况下,RabbitMQ 只允许本地连接。通过编辑 `rabbitmq.conf` 文件可以更改此行为。 #### 修改配置文件 在 Linux 系统上,默认的配置文件路径通常位于 `/etc/rabbitmq/` 下面名为 `rabbitmq.conf` 或者对于某些版本可能是 `rabbitmq-env.conf`。如果不存在该文件,则可以从示例模板创建: ```bash sudo cp /usr/share/doc/rabbitmq-server/examples/rabbitmq.conf.example /etc/rabbitmq/rabbitmq.conf ``` 接着打开这个文件进行编辑[^3]: ```bash sudo vi /etc/rabbitmq/rabbitmq.conf ``` 找到如下部分并取消注释或添加相应行来指定监听地址和端口: ```ini listeners.tcp.default = 0.0.0.0:5672 management.listener.port = 15672 management.listener.ip = "0.0.0.0" ``` 上述配置使得 RabbitMQ 监听所有网络接口上的请求,并开放管理界面给外部访问[^5]。 #### 设置用户权限 除了调整服务器配置外,还需要确保有适当的身份验证机制以及授予特定用户的远程登录权限。可以通过命令行工具完成这些操作: - 创建新用户并赋予完全控制权(可根据实际需求调整) ```bash sudo rabbitmqctl add_user myuser secret_password sudo rabbitmqctl set_permissions -p / myuser ".*" ".*" ".*" ``` - 启用 Web 管理插件以便于监控和管理集群状态 ```bash sudo rabbitmq-plugins enable rabbitmq_management ``` 最后重启服务应用变更: ```bash sudo systemctl restart rabbitmq-server.service ``` 确认服务正常运行且处于活动状态[^2]: ```bash sudo systemctl status rabbitmq-server ``` 此时应该能够从其他机器通过浏览器访问 http://your_server_ip:15672 来管理和监视 RabbitMQ 的工作情况了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值