check_mk 和 nginx 的反向代理存在 URL 重写问题

check_mk 和 nginx 的反向代理存在 URL 重写问题

我正在尝试在代理后面的 docker 中运行 check_mk,但是无法设置 check_mk base_url。

因此 check_mk 正在运行http://somehost:6000/站点名称/check_mk/我需要从https://example.com/prefix/check_mk/

我有以下 nginx 设置:

location /prefix/check_mk/ {
    proxy_pass http://somehost:6000;
    rewrite ^/prefix/check_mk/(.*) /sitename/check_mk/$1 break;
}

我还有以下代理配置

代理http版本1.1;

             # add server_port if we are not running on a standard port or a iptables nat to a standard port
             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 $scheme;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection $connection_upgrade;
             proxy_read_timeout 86400s;

我第一次可以访问 check_mkhttps://example.com/prefix/check_mk/index.py

但是,返回页面中的所有链接都是无效的,因为它们不知道代理。因此它们类似于https://example.com/checkmksitename/check_mk/dashboard.py代替https://example.com/prefix/dashboard.py

当它不支持使用基本 URL 来构建链接时,我该如何让这样的程序在代理后面工作呢?

答案1

这似乎太晚了,但我偶然发现了这一点并最终解决了问题。这必须位于您的位置块中:

proxy_pass_header Authorization;
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;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
proxy_request_buffering off;
client_max_body_size 0;
proxy_read_timeout  36000s;
proxy_redirect off;
proxy_ssl_session_reuse off;
proxy_hide_header x-frame-options;

这可能比需要的要多一点,但对我来说这是有用的。祝你好运!

相关内容