Nginx Status Seite aktivieren

Genau wie beim Apache2 gibt es auch für den Nginx eine Status Seite, die Informationen zur Auslastung des Servers in Echtzeit bereitstellt. Anhand dieser Informationen lässt sich nicht nur die Konfiguration des Servers optimieren, sondern auch ein Monitoring mittels Nagios implementieren

Vorraussetzungen

Damit man die Status Seite aktivieren kann, muss Nginx mit dem HttpStubStatusModule Modul installiert sein. mit folgendem Befehl kann man das überprüfen.

$ nginx -V 2>&1 | grep -o with-http_stub_status_module
with-http_stub_status_module

Wenn die Ausgabe wie oben aussieht, ist das Modul installiert. Hinweis: Bei der Installation über die Paketquellen von Ubuntu, wird das Modul automatisch mit installiert.

Nginx Konfiguration

Zum Aktivieren einer Status Seite genügt es den folgenden Code innerhalb eines server {..} Blocks hinzuzufügen.

        location /nginx_status {
          stub_status on;
          access_log   off;
          allow 10.0.0.2;
          deny all;
        }

Hinweis: Die IP Adresse 10.0.0.2 entspricht dem Client/Server, der die Status Seite aufrufen will.

Anschließend muss die Konfiguration neu eingelesen werden.

$ sudo service nginx reload

Ergebnis

Beim Aufruf der Seite http://servername/nginx_status sollte das Ergebnis in etwa so aussehen.

Active connections: 13 
server accepts handled requests
 587 587 1796 
Reading: 0 Writing: 3 Waiting: 2

Webfonts in CDN ablegen (Access-Control-Allow-Origin)

Ich verwende gern die Webfonts Font Awesome um meine Projekte ein wenig zu verschönern. Das Projekt bietet neben einem CDN auch die Möglichkeit die Projektdateien herunterzuladen. Kurz den Pfad zu den Fonts anpassen und schon kann es losgehen.

Bei Absoluten Pfaden hat man aber schnell das Problem, das beim Ablegen der Fonts im CDN (oder unter einer Subdomain für statische Inhalte) der Browser das Laden aufgrund des fehlenden Access-Control-Allow-Origin Header blockt.

Um den Zugriff nun auch von anderen Domains aus zu erlauben, z.B. einer lokalen Testumgebung, kann bei einem Apache die Site-Konfiguration oder eine .htaccess Datei genutzt werden.

Ich habe dazu einfach die folgende Zeilen in die .htaccess geschrieben.

<IfModule mod_headers.c>
    <FilesMatch "\.(ttf|ttc|otf|eot|svg|woff)$">
       Header set Access-Control-Allow-Origin "*"
    </FilesMatch>
</IfModule>

Hinweis: Beim Apache muss das Modul headers aktiviert sein. Unter Ubuntu funktioniert das wie folgt.

$ sudo a2enmod headers
$ sudo service apache2 restart

Bei der Verwendung eines NGINX einfach die folgenden Zeilen in die Konfigurationsdatei einfügen.

if ($filename ~* ^.*?\.(ttf)|(ttc)|(otf)|(eot)|(svg)|(woff)$){
	add_header Access-Control-Allow-Origin *;
}

Gruppieren und zählen von IP Adressen in der access.log

Manchmal will man als Administrator/Webmaster wissen, von welchen IP Adressen auf den Webserver zugegriffen wird. Ein sehr schneller weg um das herauszufinden geht über die access.log.

Der folgende Befehl liefert die Anzahl aller IP Adressen in der access.log.

$ pcregrep -o ‚^[0-9.]+(?=\s)‘ /var/log/apache2/access.log | sort | uniq -c | sort -bg

Das Egebnis sieht in etwa so aus. (Die Anzahl der Einträge gefolgt von der IP)

   5 84.159.***.***
  39 216.67.***.***
  41 81.16.***.***
  90 10.100.100.123
 919 10.100.100.36
1880 10.100.100.56
2613 10.100.100.56

Hinweis: Die öffentlichen IP Adressen dieses Beispiels eines Testservers wurden mit Sternchen unkenntlich gemacht.

Sollte pcregrep nicht installiert sein, kann man es wie folgt installieren.

$ sudo apt-get install pcregrep