Nginx代理Zipkin UI跳转至其他上游路径问题求助
问题分析与解决方案
问题根源
你的配置存在两个核心问题:
location /tracing/的配置是无限重定向死循环,访问这个路径会一直跳转到自身,完全无效。- 当你访问
/tracing时,Nginx 代理到 Zipkin 的http://localhost:9411/,但 Zipkin 服务内部会返回重定向(比如跳转到自身的根路径/),而 Nginx 默认会直接把这个重定向返回给浏览器。浏览器收到后请求根路径/,就匹配到了你的location /配置,最终跳转到了 4200 的服务。
修复后的配置
直接替换掉你原来的 Zipkin 相关配置,使用下面的内容:
# 处理不带斜杠的 /tracing 请求,重定向到带斜杠的标准路径 location /tracing { return 301 /tracing/; } # 代理所有 /tracing/ 开头的请求到 Zipkin,同时修正重定向地址 location /tracing/ { proxy_pass http://localhost:9411/; # 把 Zipkin 返回的根路径重定向,替换为 /tracing/ proxy_redirect http://localhost:9411/ /tracing/; } # 你的原有根路径配置保留 location / { proxy_pass http://localhost:4200/; }
配置说明
- 第一个
location /tracing确保所有不带斜杠的请求都统一重定向到带斜杠的/tracing/,避免路径匹配混乱。 proxy_redirect是关键:它会拦截 Zipkin 返回的所有指向自身根路径的重定向,把目标地址替换为/tracing/,这样浏览器会继续请求 Zipkin 相关路径,而不会跳转到根路径的 4200 服务。- 移除了你原来那个无限循环的
location /tracing/配置,彻底解决死循环问题。
内容的提问来源于stack exchange,提问作者DarkSide77
相关产品推荐
相关产品推荐

