RabbitMQ管理页面通过nginx反向代理报错解决

欢迎加入QQ讨论群: 839421316
创建时间不长,请积极讨论

问题说明

在RabbitMQ的管理页面,当查看Queue信息时,出现以下错误。

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

Nginx配置内容

server {
listen	80;
server_name file.ihayun.com;
location / {
 port_in_redirect on;
 proxy_redirect off;
 proxy_pass http://172.16.0.11:15672/;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header User-Agent $http_user_agent;
 proxy_set_header Host $http_host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
}
}

RabbitMQ配置

[
 {rabbit,
   {loopback_users, []}
  ]},
 {kernel,
  ]},
 {rabbitmq_management,
  [{path_prefix, "/my-prefix"}
  ]},
 {rabbitmq_shovel,
  [{shovels,
    ]}
  ]},
 {rabbitmq_stomp,
  ]},
 {rabbitmq_mqtt,
  ]},
 {rabbitmq_amqp1_0,
  ]},
 {rabbitmq_auth_backend_ldap,
  ]}
].
解决方法
upstream rabbitbackend {
        server 172.16.0.11:15672;
}
server {
listen  80;
server_name my.abc.com; 
location / {
        port_in_redirect on;
        proxy_redirect off;
        proxy_pass http://rabbitbackend;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header User-Agent $http_user_agent;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

location ~* /rabbitmq/api/ {
        rewrite ^ $request_uri;
        rewrite ^/rabbitmq/api/(.*) /api/$1 break;
        return 400;
        proxy_pass http://rabbitbackend$uri;
        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;
    }

}

问题原因

由于在RabbitMQ的请求路径中,存在特殊的字符"%2F",Nginx在反向代理时转换失败。因此,需要把"%2F"正常传给RabbitMQ

如果有什么问题,可以加入QQ群进行讨论。QQ群:839421316

谢谢支持。
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您在 Docker 中部署了 RabbitMQ,并且在访问 RabbitMQ管理界面时遇到了问题,可能有以下几个解决方法: 1. 确保您在运行 Docker 容器时已经设置了正确的端口映射。默认情况下,RabbitMQ 管理界面运行在 15672 端口,您需要将主机的 15672 端口映射到容器的 15672 端口上。例如,您可以使用以下命令运行容器: ``` docker run -d --name rabbitmq -p 15672:15672 rabbitmq:3-management ``` 2. 检查 RabbitMQ 的配置文件中是否启用了管理界面。需要在配置文件中设置 rabbitmq_management 插件的启用。在 Docker 中,您可以使用环境变量来设置此选项。例如,您可以使用以下命令运行容器: ``` docker run -d --name rabbitmq -p 15672:15672 -e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbitmq_management" rabbitmq:3-management ``` 3. 检查防火墙设置。如果您的防火墙设置了限制,可能会阻止您访问 RabbitMQ管理界面。请确保您的防火墙设置允许您访问 RabbitMQ 端口。 4. 检查您的浏览器是否支持 JavaScript。管理界面是使用 JavaScript 构建的,如果您的浏览器不支持 JavaScript,可能会导致无法访问管理界面。 5. 检查您在访问管理界面时是否使用了正确的 URL。在 Docker 中,您需要使用 Docker 主机的 IP 地址或者 Docker 容器的名称来替代 localhost。例如,如果您使用容器名称为 rabbitmq,则可以使用以下 URL 访问管理界面: ``` http://rabbitmq:15672/ ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值