项目环境
生产环境,采用的是nginx 1.12.1和zabbix5.0,php7.3.28
处理过程
当看到这个问题时,首先想到的是php解析失败,因为nginx日志是正常的,在访问仪表盘的时候无法访问,因此花费了太多的时间在php查看上(下图是失败的截图)
后查看控制台,发现type是script的请求结果都是faile,经过查看发现如下
代理文件大小超过配置的proxy_temp_file_write_size值时,nginx会将文件写入到临时目录下(默认为/proxy_temp)。如果nginx中/proxy_temp过大或者没有权限,就写不进去。
但zabbix使用的是fastcgi_pass,是不是原理相同呢,因此找到fastcgi_temp,进行删除,重启nginx,发现可以进入了。
服务优化
为了防止缓存文件过多,导致nginx解析异常,因此设置Nginx的缓存过期时间expires 10d;
到期自动清理
#附nginx配置
location / {
root html;
index index.php index.htm;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
expires 10d;
include fastcgi.conf;