草庐IT

RabbitMQ远程访问

zyzyzyzyzyzyzyzyz 2023-09-22 原文

文章目录

背景问题

  • guest这个用户只能使用localhost登录,而不能使用IP地址登录: amqp://guest:guest@127.0.0.1:5672/rabbitVHost

    远程无法连接amqp://guest:guest@10.10.10.128:5672/rabbitVHost

  • 可以建立一个新的用户,用于远程链接

1. 创建用户

原来的guest用户只能用于本地(安装了RabbitMQ的服务器)访问,我们需要添加一个用户

(教程中说需要修改用户的配置文件,但我发现不修改,直接在terminal管理界面中添加也可以)

添加用户的操作

直接输入 rabbitmqctl可以查看rabbitmqctl help相关命令

# 添加用户 rabbitmqctl add_user "username" "password"
 ~  sudo rabbitmqctl add_user test 1
Adding user "test" ...

# 设置用户为管理者 rabbitmqctl set_user_tags "username" "权限administrator"
 ~  sudo rabbitmqctl set_user_tags test administrator
Setting tags for user "test" to [administrator] ...

# 权限添加
sudo rabbitmqctl set_permissions -p "/" test ".*" ".*" ".*"
Setting permissions for user "test" in vhost "/" ...

# 查看所有用户权限信息
 yang@VM  ~  sudo rabbitmqctl list_permissions
Listing permissions for vhost "/" ...
user	configure	write	read
guest	.*	.*	.*
test	.*	.*	.*

2. 关闭防火墙开启端口

  • Ubuntu的防火墙和之前的相比有改动
  • 远程访问,需要开启RabbitMQ使用的端口

关闭防火墙

Ubuntu的防火墙关闭打开

类似教程2

# 关闭防火墙sudo ufw disable
Firewall stopped and disabled on system startup
# 加载防火墙启动防火墙sudo ufw enable
Firewall is active and enabled on system startup
# 开放端口
sudo ufw allow 80 #tcp和udp 80
sudo ufw allow 80/tcp #仅tcp 80
sudo ufw allow 7100:7200/tcp #端口范围

# 查看已经开放的端口
sudo ufw status     
Status: inactive # 防火墙不活跃:没开放
 yang@VM  ~  sudo ufw status
Status: active # 开放
	# 下面显示的已经开放的端口
To                         Action      From
--                         ------      ----
15672                      ALLOW       Anywhere                  
15672 (v6)                 ALLOW       Anywhere (v6) 

3. 测试远程访问

远程访问方法

在可以访问服务器的Client浏览器输入地址: http://IP:15672 ,然后可使用用户(test/1(username/password))登录。

IP地址是安装运行RabbitMQ的服务器地址

如下Guest用户显示无法登录,只能通过localhost(RabbitMQ对应的Server登录)

下面使用 “test” 用户登录成功

参考链接

RabbitMQ远程访问

有关RabbitMQ远程访问的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  3. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  4. ruby - 有没有办法从 ruby​​ case 语句中访问表达式? - 2

    我想从then子句中访问c​​ase语句表达式,即food="cheese"casefoodwhen"dip"then"carrotsticks"when"cheese"then"#{expr}crackers"else"mayo"end在这种情况下,expr是食物的当前值(value)。在这种情况下,我知道,我可以简单地访问变量food,但是在某些情况下,该值可能无法再访问(array.shift等)。除了将expr移出到局部变量然后访问它之外,是否有直接访问caseexpr值的方法?罗亚附注我知道这个具体示例很简单,只是一个示例场景。 最佳答案

  5. ruby - 从外部访问类的实例变量 - 2

    我理解(我认为)Ruby中类变量和类的实例变量之间的区别。我想知道如何从该类外部访问该类的实例变量。从内部(即在类方法中而不是实例方法中),它可以直接访问,但是从外部,有没有办法做MyClass.class.[@$#]variablename?我没有任何具体原因要这样做,只是学习Ruby并想知道是否可行。 最佳答案 classMyClass@my_class_instance_var="foo"class上述yield:>>foo我相信Arkku演示了如何从类外部访问类变量(@@),而不是类实例变量(@)。我从这篇文章中提取了上述内

  6. ruby-on-rails - 使用 HTTP.get_response 检索 Facebook 访问 token 时出现 Rails EOF 错误 - 2

    我试图在我的网站上实现使用Facebook登录功能,但在尝试从Facebook取回访问token时遇到障碍。这是我的代码:ifparams[:error_reason]=="user_denied"thenflash[:error]="TologinwithFacebook,youmustclick'Allow'toletthesiteaccessyourinformation"redirect_to:loginelsifparams[:code]thentoken_uri=URI.parse("https://graph.facebook.com/oauth/access_token

  7. ruby - 使用 Class.new 时访问外部范围 - 2

    是否有可能以某种方式访问​​Class.new范围内的a?a=5Class.new{defb;aend}.new.b#NameError:undefinedlocalvariableormethod`a'for#:0x007fa8b15e9af0>#:in`b' 最佳答案 即使@MarekLipka的回答是正确的——改变变量范围总是有风险的。这是可行的,因为每个block都带有创建它的上下文,因此您的局部变量a突然变得不那么局部了——它变成了一个“隐藏的”全局变量:a=5object=Class.new{define_method(

  8. ruby - 使用访问器方法即时创建对象 - 2

    使用散列定义的访问器方法动态创建对象的最简单方法是什么?例如,如果我有一个散列:{foo:"Foo",bar:"Bar"}我想要一个具有访问器方法foo、foo=、bar和bar=的对象,其初始值分别为"Foo"和"Bar"。我可以想到这样做:moduleObjectWithAccessordefself.newh;Struct.new(*h.keys).new(*h.values)endendo=ObjectWithAccessor.new(foo:"Foo",bar:"Bar")o.foo#=>"Foo"但是,我不需要它们的多个实例具有相同的特定键集,而是希望每次都使用可能不同的键

  9. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

  10. ruby-on-rails - "undefined method ` stub_request '"访问 RSpec 支持文件中的方法时 - 2

    我的Ruby-on-Rails项目中有以下文件结构,用于规范:/spec/msd/serviceservice_spec.rb/support/my_modulerequests_stubs.rb我的request_stubs.rb有:moduleMyModule::RequestsStubsmodule_functiondeflist_clientsurl="dummysite.com/clients"stub_request(:get,url).to_return(status:200,body:"clientsbody")endend在我的service_spec.rb我有:re

随机推荐