cadvisor 的 Nginx 反向代理配置

cadvisor 的 Nginx 反向代理配置

我正在尝试配置 nginx 以代理在主机端口 8000 上运行的 cadvisor docker 实例。

我有以下配置:

upstream cadvisor {
    server 127.0.0.1:8000;
}
...
...
server {
    ...
    ...
    location /cadvisor {
        rewrite ^([^.]*[^/])$ $1/ permanent;
        rewrite ^/cadvisor$ /cadvisor/ permanent;
        rewrite ^/cadvisor(/.*) $1 break;
        auth_basic "Restricted"; #For Basic Auth
        auth_basic_user_file /etc/nginx/.htpasswd; #For Basic Auth
        proxy_pass http://cadvisor;
        proxy_set_header Host $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 https;
        proxy_redirect ~^/(.*)/ /cadvisor/$1;
    }
    ...
    ...
}

这适用于除以下 URL(这是 cadvisor 生成的链接之一)之外的所有 URLhttps://myserver.com/cadvisor/containers//docker/a11c7edcc131d92c6ec3476329e5a54c82d2c31ee3f5592ba3fcb9386cb4f06a

这可能是因为 URL 中“docker”前面的双斜杠弄乱了 css 路径。如果我能将这些 URL 重定向到单斜杠版本的 URL(即https://myserver.com/cadvisor/containers/docker/a11c7edcc131d92c6ec3476329e5a54c82d2c31ee3f5592ba3fcb9386cb4f06a

有没有办法将 URL 重定向到单斜线版本?

答案1

rewrite指令似乎对 URI 的规范化版本进行操作,该版本看不到 double 序列/。 可以/通过对变量进行操作来纠正 double 情况$request_uri

if ($request_uri ~ ^(.*)//(.*)$) { return 302 $1/$2; }

这种警告关于该if指令。

相关内容