如何设置Monit的基础URL?解决Nginx代理后重定向路径异常问题
解决Monit代理后重定向丢失前缀的问题
核心原因
Ubuntu 22.04自带的Monit版本较新,默认不再自动识别代理前缀,导致操作后的302重定向未带上/monit基础路径;而Ubuntu 20.04的旧版本Monit可能隐式处理了该逻辑,因此仅部分服务器出现问题。
解决方案
1. 配置Monit指定基础URL前缀
编辑Monit主配置文件(通常为/etc/monit/monitrc或/etc/monit.conf),在set httpd块中添加prefix指令,强制Monit生成的所有URL带上代理路径前缀:
set httpd port 2812 use address localhost allow localhost prefix /monit # 显式声明基础URL前缀
修改后重启Monit服务:
systemctl restart monit
2. 完善Nginx代理配置
在Nginx的server块中,添加如下location配置,确保传递必要头信息并修正重定向:
location /monit/ { proxy_pass http://localhost:2812/; # 传递代理相关头信息 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Prefix /monit; # 强制修正Monit返回的不带前缀的重定向响应 proxy_redirect http://localhost:2812/ /monit/; }
修改后重启Nginx服务:
systemctl restart nginx
验证
点击Monit界面的「启用监控」/「禁用监控」按钮,此时重定向会正确指向/monit/nginx而非/nginx,操作完成后页面可正常返回Monit服务详情页。
内容的提问来源于stack exchange,提问作者BurninLeo
相关产品推荐
相关产品推荐

