在端口80上运行联合的RabbitMQ

3
我们的客户有一个要求,即Web服务器只能开放80和443端口,面向公网和内部都是如此,但我们的应用程序可以通过在内部使用队列来获益。
是否可能在端口80上运行RabbitMQ?
更新:
设置如下。
我们有一个面向公众的API服务器,调用各种后端系统。
在API服务器和后端服务器之间还有另一层,大多数情况下只起到代理的作用。
一些后端系统以及代理层会间歇性地上下线。
我想做的是在API服务器上有一个队列,在代理层和后端层都有一个队列。
这些队列将被联合起来,使得在API服务器上放置的消息将被转发到最终的后端服务器(仅需要对插入和更新进行排队)。

不可能实现,从安全角度考虑也不应该这么做。 - theMayer
从安全角度来看,这样做有何不妥之处?我在想是否可以根据协议在IIS中路由消息,例如将通过80端口的AMQP路由到另一个Rabbit监听的端口? - pac w
首先,非HTTP流量在80端口上经常会被防火墙阻止。RMQ并不是为公共访问而设计的。您应该确保有一个Web服务层来拦截潜在的毒丸消息和其他恶意行为尝试。您客户的安全要求可能(希望如此)比仅规定端口更加广泛。 - theMayer
你可能是对的,非 HTTP 流量被阻止了,但 RabbitMQ Stomp 不是可以通过 HTTP 工作吗? - pac w
是的,但它正在使用HTML。我认为除非所有的消息终点都是公开的和/或以其他方式得到保护(昂贵),否则这不是一个好主意。 - theMayer
在您更新的问题中,您没有描述RabbitMQ基于HTTP的实现的位置。您是否计划通过消息队列公开API端点,还是API充当中间层?我认为,作为现在的形式,这个问题太宽泛了,最好在程序员或其他堆栈交换网站上解决。 - theMayer
1个回答

1
一种方法是使用Web-Stomp插件和Sock.js,使用nginx作为代理。 另一种方法是使用node.js回调发送消息、处理事件并使用node.js创建消息。 服务器端通过本地主机连接默认端口与RabbitMQ通信。 第三种方法是使用具有另一个IP地址的子域。

这些方法中是否有任何一种适用于联合交换机/队列? - pac w
你打算在客户端使用它吗?这是一个程序还是网站? - ainu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接