如果mjj们有很多服务器,你们会选用什么服务器监控面板呢,有不少都会选择哪吒面板吧。虽然哪吒面板功能全面,有很多监控指标,但是哪吒面板自身权限比较高,如果服务端被攻陷,那么所有与之关联的客户端都会被黑客所控制。在NodeSeek上看见过不少相关帖子,服务器被黑客拿来当做“肉鸡”,拿来端口扫描什么的,轻则被服务器商警告,重则服务器被回收。
ServerStatus-Hotaru
除了用哪吒面板做好安全防护(比如使用强密码,更改默认端口),还可以选择一个轻量级的探针——ServerStatus-Hotaru (点击跳转Github)。

监控界面如上图所示,差不多也够用了。通过官方的status.sh脚本,可以方便地安装和设置服务端和客户端的状态。默认安装路径是:
/usr/local/ServerStatus浏览器缓存问题
ServerStatus-Hotaru的监控网页需要自行部署,我是使用nginx来部署的。按下F12打开开发者控制台,可以发现网页每间隔1秒钟就会请求一次文件
/usr/local/ServerStatus/web/json/stats.json自然可以猜测网页需要通过此文件来更新监控数据。
如果使用默认的部署方式,那么这个文件的响应是不包含任何缓存控制头的。我猜测如果浏览器多次请求这个文件,文件内容没有变更,就会将此文件认定为可以缓存,这样网站的监控数据就一直都不会更新了,因为每次请求都读取的是本地缓存,至于缓存有效期就不清楚是多久了。你要是问stats.json为什么长时间未更新,触发了浏览器缓存机制,这是因为有一次我的服务端挂了,等我重启服务端后,发现网页上的数据就是不更新,才发现stats.json被缓存了。
修复方案
保持网页其他设置不变,给stats.json添加专门的缓存控制头。这里给出nginx的配置:
# 探针 443
server {
include listen_v4v6_ssl_quic.conf;
include cert_xxxx.cn.conf;
include setssl.conf;
server_name xxxx.cn;
location /{
include h2h3_hsts.conf;
index index.html;
alias /usr/local/ServerStatus/web/;
}
location ~* ([^/]+)\.json$ {
add_header Cache-Control "max-age=0, must-revalidate"; # 这里添加缓存控制头,禁用浏览器缓存
include h2h3_hsts.conf;
alias /usr/local/ServerStatus/web/json/;
try_files $1.json =404;
}
}- nginx中正则匹配的优先级大于默认匹配“/”,所以正则匹配的location块可以写在默认匹配的下面。
- 使用捕获组 + try_files的方式是因为直接alias /usr/local/ServerStatus/web/json/stats.json会跳转到./stats.json/,后面多了一个“/”,原因不清楚。
各位如果觉得有用请点击下方的打赏,扫描二维码给我投币,创作不易,感谢支持!