在 docker 上使用 nginx 时的rabbitmq proxy_pass

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

我在使用 proxy_pass 时遇到了一些 nginx 问题 我的基础设施如下 AWS 上托管着 Kubernetes 服务,我使用 ALB 入口控制器。目前大约有 10 个应用程序已部署并运行良好 在 ec2 实例上,我安装了仅在私有子网下可用的 RabbitMQ。由于我使用 Datadog 来监控队列,而开发人员需要有可用的门户来检查他们的队列

问题点如下 我在 ALB Ingress 控制器和 RabbitMQ 之间运行 nginx,以公开管理控制台

只有在我需要访问特定队列之前,我的 proxy_pass 一切都运行良好,那是因为rabbitmq的虚拟主机是“/”

nginx 上的 URL https://DOMAIN:15672/path/#/queues/%2F/DataChanges 这是nginx下的配置

location /path/{
                proxy_pass http://rabbitmq1.dev.internal:15672/;
        }

此配置的响应是状态代码:404 Not Found

我尝试了不同的配置,如文档中建议的那样使用 proxy_pass ,但在这种情况下我无法访问管理控制台,错误如下所示

location /path/{
                proxy_pass http://rabbitmq1.dev.internal:15672;
        }

登录 nginx 的 docker

10.0.25.87 - - [12/2/2024:09:46:54 +0000]“GET /l2v/ HTTP/1.1”404 49“-”

浏览器响应

{“错误”:“未找到对象”,“原因”:“未找到”}

你能帮助我并指出潜在的解决方案吗?或者我应该将 nginx 更改为不同的代理?

我构建的dockerimage简单如下

FROM nginx:latest

COPY default.conf /etc/nginx/conf.d/default.conf
docker nginx rabbitmq proxypass
1个回答
0
投票

您可以尝试以下方法:

在 nginx 配置中的 proxy pass 行上方,插入以下内容:

    rewrite ^/path(.*)$ $1 break;

它应该删除 url 的 /path 部分,这可能会混淆rabbitmq服务

© www.soinside.com 2019 - 2024. All rights reserved.