.svgz-Dateien richtig ausliefern mit nginx

.svgz-Dateien richtig ausliefern mit nginx

.svgz-Dateien sind mit gzip komprimierte .svg-Dateien ("Scalable Vector Graphics"). Beim Ausliefern von .svgz-Dateien kann es unter nginx zu Fehlern kommen - anstatt, daß das Bild angezeigt wird, wird im Browser eine Fehlermeldung gezeigt (Firefox: "XML Parsing Error: not well-formed", Chrome/Safari: "This page contains the following errors: error on line 1 at column 1: Encoding error Below is a rendering of the page up to the first error."). Das Problem kann leicht behoben werden.

Öffnen Sie /etc/nginx/mime.types...

vi /etc/nginx/mime.types

... und stellen Sie sicher, daß der folgende MIME-Type vorhanden ist:

        image/svg+xml                           svg svgz;

Aktivieren Sie gzip und gzip_static in /etc/nginx/nginx.conf und stellen Sie sicher, daß der MIME-Type für .svg/.svgz-Dateien (image/svg+xml) in der Zeile gzip_types auftaucht, z.B. so:

vi /etc/nginx/nginx.conf

        gzip on;
gzip_static on;
gzip_disable "msie6";
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js image/svg+xml;
gzip_buffers 16 8k;

Wenn Sie nginx jetzt neu laden...

/etc/init.d/nginx reload

... und versuchen, die .svgz-Datei zu laden, werden Sie immer noch den Fehler bekommen, ob wohl nginx die korrekten Header ausliefert:

Content-Type: image/svg+xml
Content-Encoding: gzip

Der Trick besteht jetzt darin, den Content-Encoding-Header für .svgz-Dateien einfach nochmal zu setzen, z.B. durch folgenden location-Container im entsprechenden Vhost:

location ~* \.svgz {
add_header Content-Encoding "gzip";
}

Danach muß nginx noch neu geladen werden:

/etc/init.d/nginx reload

Wenn Sie jetzt die .svgz-Datei in Ihrem Browser neu laden, ist der Content-Encoding-Header zwar doppelt gesetzt...

Content-Type: image/svg+xml
Content-Encoding: gzip, gzip

... aber die Datei wird im Browser korrekt angezeigt.

Nach oben