Il problema

Quando si aggiorna l'interfaccia web di Nagios con il tasto F5 o premendo il pulsante ʻRefresh' nel browser, la pagina web di Nagios torna alla pagina principale.

Questo comportamento è apparso per la prima volta con la versione 3.2.0 di Nagios. In precedenza, quando si aggiornava la pagina, ad esempio premendo F5, la pagina attualmente attiva veniva ricaricata e l'utente poteva continuare a lavorare come al solito sulla pagina aggiornata.

La causa

Nella versione 3.2.0 di Nagios il precedente index.html, che rappresenta il frameset dell'interfaccia web di Nagios, è stato rinominato in index.php. Di conseguenza, il server web e il browser non sanno più se questa pagina può essere mantenuta nella cache o meno.

La soluzione

Aggiungere la seguente riga all'inizio del file index.php:

<?php header("Cache-Control: max-age=7200, public"); ?>

Il file index.php si trova solitamente nel percorso /usr/local/nagios/share.

Le prime righe del file dovrebbero avere questo aspetto dopo la modifica:

/usr/local/nagios/share/index.php:<?php header("Cache-Control: max-age=7200, public"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" 
 "http://www.w3.org/TR/html4/frameset.dtd">

<html>
<head>
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
<title>Nagios</title>
<link rel="shortcut icon" href="images/favicon.ico" type="image/ico">
</head>

<frameset cols="180,*">
<frame src="side.php" name="side" frameborder="0">
<frame src="main.php" name="main" frameborder="0">

<noframes>

... e così via.

Attenzione: Dopo la modifica, il browser deve essere riavviato, perché, ad esempio, Firefox utilizza le informazioni temporaneamente memorizzate in questo momento.

Lo sfondo

Poiché i componenti coinvolti (browser, server web ed eventualmente anche proxy) nel caso dei file PHP non sanno se la richiesta può essere memorizzata nella cache, questa pagina viene sempre richiesta e creata completamente nuova dal server web.

Questo fa sì che la pagina venga ricaricata dal browser. La pagina corrente nel frameset non può essere ripresa. Pertanto, viene caricata la pagina predefinita del frameset.

All'interno delle singole pagine PHP, il comportamento della cache del server web e del browser può essere influenzato dalle funzioni PHP. Il comportamento della cache è influenzato dall'intestazione HTTP Cache-Control. Questa intestazione può essere impostata con la funzione PHP header().

Le intestazioni HTTP devono essere impostate prima del primo output della pagina, quindi il codice deve essere inserito direttamente nella prima riga del file index.php.

Linux knowledge

Questi articoli sono stati scritti dal fondatore di Checkmk molti anni fa.
Tuttavia, sono ancora validi e quindi li conserviamo sul nostro sito web.
Da allora Mathias ha sviluppato un software di monitoraggio chiamato Checkmk.

Scopri di più