Nginx: Webserver klein und schnell
Klein, aber oho
Statistik
Viele verbreitete Monitoring-Lösungen verarbeiten die Ausgabe des Apache-Moduls »httpd mod_status«
. Bei Nginx übernimmt das Modul »stub_status«
eine ähnliche Rolle. Defaultmäßig fehlt es, deshalb müssen Sie es im Configure-Schritt mit »--with-http_stub_status_module«
aktivieren. Haben Sie es installiert, richten Sie es mit den Einstellungen aus Listing 5 ein.
Listing 5
Modul stub_status
location /nginx_status {
stub_status on;
access_log off;
allow TRUSTED.IP.ADDRESSES
deny all;
}
Eine HTTP-Anfrage auf »http://Server/nginx_status«
führt damit zu einer Antwort wie in Listing 6.
Listing 6
Status-Meldung
Active connections: 291 server accepts handled requests 16630948 16630948 31070465 Reading: 6 Writing: 179 Waiting: 106 This server has 291 active connections, has accepted and handled 16630948 connections while serving 31070465 requests...
Zusatz
Kaum eine Apache-Site kommt ohne Mod-Rewrite aus, zum Beispiel um die "hässlichen URLs" mit Query-Parameter in URLs mit gut lesbaren Pfaden umzuwandeln. Nginx hat zwar auch ein Rewrite-Modul, aber sein Syntax unterscheidet sich vom Apache-Pendant. Die ganze Wahrheit darüber verrät das Nginx-Wiki [5]. Der folgende Konfigurationscode schreibt die URLs wie beschrieben suchmaschinen- und anwenderfreundlich um:
rewrite ^/users/(.*)$ /user.php?user=$1?↩ last;
Eine etwas aufwändigere Variante führt eine If-Abfrage ein, um die Websitebesucher immer zur gleichen Domain weiterzuleiten:
if ($host ~* www\.(.*)) {
set $host_without_www $1;
rewrite ^(.*)$ ↩
http://$host_without_www$1 permanent;
}Für Geotargeting, also die Anpassung der ausgelieferten Webseite an den Standort des Users, gibt es ein GeoIP-Modul. Es erzeugt Variablen basierend auf der IP-Adresse des Anwenders und beruht auf den Maxmind-GeoIP-Datenbanken. Das Nginx-Modul setzt zwei Dinge voraus: die LibGeoIP und eine Maxmind-Datenbank. Die neueste LibGeoIP findet sich wie die Datenbank auf der Maxmind-Site [6], sie ist aber auch schon in vielen Distributions-Repositories enthalten. Diese beiden Zeilen, im HTTP-Kontext der Konfiguration eingesetzt, schalten das GeoIP-Modul ein:
geoip_country GeoIP.dat; geoip_city GeoLiteCity.dat;
Damit stehen in Nginx die unter [7] gelisteten Variablen zur Verfügung. Häufig verwenden Webanwendungen mit Nginx beispielsweise »$geoip_country_code«
, um die Requests an verschiedene Upstream-Server, je nach Land, weiter zu leiten. Um die GeoIP-Infos auch an die Backends weiterzuleiten, verwenden Sie diese Anweisung:
proxy_set_header HTTP_GEO $geo;
Tabelle 2 führt noch weiter Nginx-Module auf und erklärt kurz, wofür sie zuständig sind.
Tabelle 2
Nginx-Module
| Modul | Funktion |
|---|---|
| HTTP Referer | Filtert Requests basierend auf dem Referer. |
| HTTP Limit Zone | Beschränkt die gleichzeitige Zahl von Verbindungen pro Client |
| HTTP Limit Requests | Beschränkt die Zugriffshäufigkeit pro Client |
| User ID | Liefert Cookies aus, die den User identifizieren |
| HTTP Addition | Hängt beliebigen Text an ausgelieferte Seiten an. |
| FLV | Flash Video-Streams |
| Perl | Macht Perl-Code und Serverside-Includes direkt mit Nginx ausführbar |
| WebDAV | Verarbeitet WebDAV-Anfragen durch |
| Substitution | Textersetzung in Webseiten |
| Image Filter | Bildverarbeitung mit dem GD-Modul |
| Secure Link | Schützt Seiten mit einem Schlüssel vor unbefugtem Zugriff |
| XSLT | Verarbeitet Seiten mit XSL weiter |
Artikel als PDF herunterladen
Alle Angebote zum ADMIN-Magazin im Online-Shop
Versandartikel |
Onlineartikel |




