![check_mk 和 nginx 的反向代理存在 URL 重写问题](https://linux22.com/image/728909/check_mk%20%E5%92%8C%20nginx%20%E7%9A%84%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E5%AD%98%E5%9C%A8%20URL%20%E9%87%8D%E5%86%99%E9%97%AE%E9%A2%98.png)
我正在尝试在代理后面的 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;
这可能比需要的要多一点,但对我来说这是有用的。祝你好运!