RabbitMQ 管理 - 加载队列或交换时出现 404

问题描述 投票:0回答:4

我已通过 Google Cloud Platform 市场将 RabbitMQ 安装到我的 Kubernetes 集群。

我可以在 Kubernetes 集群中托管的其他应用程序中很好地连接到它,我可以创建队列并从中设置消费者,也没有任何问题。

我可以暂时端口转发端口 15672,以便我可以从我的计算机访问管理用户界面。我可以正常登录,并且在访问他们的页面时会得到队列和交换器的列表。但是,一旦我选择队列或交换器来加载该特定项目,我就会收到 404 响应和以下消息。当我尝试添加新队列时,我得到了相同的结果。

Not found
The object you clicked on was not found; it may have been deleted on the server.

它们肯定存在,因为当我返回列表页面时,它们就在那里。这真的很令人沮丧,因为通过简单地使用 RabbitMQ 管理将消息发布到队列来测试我的微服务会很好,但我目前无法这样做!

如有任何帮助,我们将不胜感激,谢谢!

编辑
为了清楚起见,提供了屏幕截图(单击列表中的队列后): rabbitmq admin

如果我尝试添加新队列,我不会收到该消息,而是收到 405。

kubernetes google-cloud-platform rabbitmq google-kubernetes-engine
4个回答
4
投票

这是因为默认虚拟主机是“/”。当您访问交换/队列页面时,RabbitMQ 管理员会在 URL 中使用此信息。 URL 编码后变为“%2F”。然而,入口控制器(在我的例子中是 nginx)将其转换回“/”,因此管理应用程序无法找到该 URL(因此是 404)。

我想出的解决方法是将rabbitmq中的default_vhost设置更改为不带“/”的内容(例如“vhost”)。

在我正在使用的bitnamirabbitmqHelm图表中,这是使用以下配置的:

rabbitmq:
  extraConfiguration: |-
    default_vhost = vhost

您确实必须更新客户端以显式指定这个新的虚拟主机,因为它们通常默认使用“/”。在 Spring Boot 中,这就像添加一样简单:

spring:
  rabbitmq:
    virtual-host: vhost

3
投票

今天早上我遇到了和你一样的问题,我使用以下配置修复了它:

server {
    listen 80;
    server_name rabbitmq.o2c.ovh;
    access_log acces.log;
    error_log error.log;
    location / {
        client_body_buffer_size 128k;
        proxy_send_timeout   90;
        proxy_read_timeout   90;
        proxy_buffer_size    4k;
        proxy_buffers     16 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        proxy_connect_timeout 30s;
        proxy_pass   http://localhost:15672;
        proxy_set_header   Host   $host;
        proxy_set_header   X-Real-IP  $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

0
投票

检查内部 URL,它应该按预期工作,否则您的

definitions.json
文件将无法访问您的
.yml


0
投票

对我来说,这是解决方案:

    location /rabbitmq/api/ {
        rewrite ^ $request_uri;
        rewrite ^/rabbitmq/api/(.*) /api/$1 break;
        return 400;
        proxy_pass http://rabbitmq-test.rabbitmq-test.svc.cluster.local:15672$uri;
    }

    location /rabbitmq/ {
        rewrite ^/rabbitmq$ /rabbitmq/ permanent;
        rewrite ^/rabbitmq/(.*)$ /$1 break;
        proxy_pass http://rabbitmq-test.rabbitmq-test.svc.cluster.local:15672;
        proxy_buffering                    off;
        proxy_set_header Host              $http_host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
© www.soinside.com 2019 - 2024. All rights reserved.