我在使用 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/;
}
我尝试了不同的配置,如文档中建议的那样使用 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
您可以尝试以下方法:
在 nginx 配置中的 proxy pass 行上方,插入以下内容:
rewrite ^/path(.*)$ $1 break;
它应该删除 url 的 /path 部分,这可能会混淆rabbitmq服务