nginx/Plesk – Caching für statische Inhalte einschalten

Im letzten Beitrag habe ich erklärt, wie man die GZip-Komprimierung im nginx unter Plesk aktiviert. Google PageSpeed Insights hat außerdem noch bemängelt, das mein Server keine Cache-Informationen mitschickt. Diese Information ist für statische Inhalte wie JPG oder JS-Dateien sinnvoll, da hiermit dem Browser gesagt wird, wie lang er die aus dem lokalen Plattencache nutzen soll, anstatt sie erneut vom Server zu laden.

Leider kann man diese Option nicht auf Serverebene einstellen, sondern muss das pro Domain / Subdomain durchführen. Und zwar unter „Einstellungen für Apache & nginx“.

Dort trägt man den obenstehenden Text unter „Zusätzlich nginx-Anweisungen“ ein. Hier nochmal der Text als „Kopiervorlage“.

location ~* \.(?:ico|css|js|jpg|gif|jpeg|png|svg|woff)$ {
   expires 7d;
   add_header Pragma public;
   add_header Cache-Control "public";
}

Den Wert von 7d kann man bei Bedarf auch auf länger, z.B. 30d für 30 Tage anpassen.

Hier die Anzeige von Google PageSpeed Insights vor der Änderung:

und hier danach:

Der Wert ist also von 80 auf 85 gestiegen…

 

 

nginx/Plesk – GZIP-Komprimierung aktivieren

Kürzlich habe ich auf Google PageSpeed Insights mal meine eigene Webseite überprüft und als Antwort bekam ich ein „Poor“ zurück, d.h. die Lade- und Reaktionszeiten meines Servers waren schlecht.

Die einzelnen Punkte ging ich dann Schritt für Schritt durch. Einige Sachen wie große Grafiken optimieren oder weniger JavaScripts konnte ich teilweise umsetzen, aber ein Punkt machte mich stutzig: „Website-Daten komprimiert ausliefern“. Sofern der Besucher der Seite nicht gerade einen uralten Internet Explorer verwendet, kann der Server die Webseiten-Daten vor der übertragung mit gzip komprimieren. Scheinbar war das bei mir ausgeschaltet.

Auf der Homepage von Plesk gibt es eine Anleitung, die wie man das aktiviert. Aber leider ist die nur halb richtig, darum hier die korrigierte Fassung.

Zunächst legt man eine Datei „/etc/nginx/conf.d/gzip.conf“ mit folgendem Inhalt an:

gzip on; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; gzip_proxied any; gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/x-icon image/bmp image/svg+xml; gzip_vary on;

Der fett geschriebene Teil fehlt in der „offiziellen“ Anleitung. Danach einfach mal über /etc/init.d/nginx restart den nginx neu starten. Nun werden die gut komprimierbaren Dateitypen komprimiert. Es macht keinen Sinn, hier z.B. JPG-Dateien, die ja von sich aus schon komprimiert sind, nochmal zu komprimieren. Das würde nur Zeit kosten.

Wenn man weitere Dateitypen hinzufügen will, lohnt sich ein Blick in die Datei /etc/nginx/mime.types – hier sieht man, welche Dateiendung mit welchem MIME-Typ ausgeliefert wird. Den MIME-Typ schreibt man dann einfach in die gzip.conf mit rein.

SSH auf dem Raspberry Pi aktivieren (Headless-Installation)

Will man einen Raspberry Pi mit Raspian in Betrieb nehmen, ist es eigentlich ganz einfach: Raspian Image auf die SD-Karte schreiben und dann Maus, Tastatur und Bildschirm anschließen und das ganze konfigurieren.

Früher konnte man auch direkt per SSH zugreifen, d.h. man konnte sich den Weg sparen, erst eine Maus und Tastatur sowie einen Bildschirm anzuschließen. Aus Sicherheitsgründen geht das in den neueren Raspbian-Versionen nicht mehr, da hier der SSH-Server standardmäßig erstmal deaktiviert ist. Jetzt gibt es aber durchaus Situationen, in denen man einen Raspberry headless (also ohne Peripherigeräte) in Betrieb nehmen will und dann per SSH konfiguriert.

Auch das geht noch, wenn auch mit einem kleinen Trick: man legt einfach eine leere Datei Namens „ssh“ auf der SD-Karte an. Wird der Raspberry nun damit gestartet, löscht er diese leere Datei wieder und aktiviert SSH dauerhaft.

WICHTIG: Da man nun mit Standardpasswörtern auf den Raspberry kommt, sollte das erste sein, das man mit „passwd“ sofort das Passwort des Benutzers „pi“ ändert. So lange das nicht erfolgt ist, stellt SSH auf dem Raspberry durchaus ein Sicherheitsproblem dar.

 

Opel Autoradio CDR 500 – SAFE-PIN Eingabe nach Batteriewechsel

In meinem Opel Astra habe ich ein Opel CDR 500 Autoradio. Kürzlich musste ich die Batterie abklemmen und danach zeigte mir das Radio nur noch SAFE auf dem Display an und wollte, das ich den Sicherheitscode eingebe. Kein Problem dachte ich mir, da ich meinem iPhone gespeichert habe. Aber wie gibt man den nun ein?

Wenn man weiß wie es geht, dann ist es ganz einfach:

  1. Zündung einschalten
  2. Radio ausschalten
  3. AS-Taste drücken und gedrückt halten, Radio einschalten. Nach 3 Sekunden ertönt ein Bestätigungs-Geräusch. Taste AS loslassen. Im Display erscheint SAFE, nach wenigen Sekunden änder sich die Anzeige zu „10 – – – -„. Die Zahl (hier 10) gibt an, wie viele Versuche man noch hat.
  4. Mit den Stationstasten 1 – 4 kann man nun jeweils die 1. bis 4. Stelle um jeweils eins erhöhen. Wenn der Code also 0123 wäre, muss man 1x Taste 1, 2x Taste 2, 3x Taste 3 und 4x Taste 4 drücken. Im Display erscheint nun der eingegebene Code.
  5. Wenn der im Display angezeigte Code korrekt ist, bestätigt man diesen, indem man die AS-Taste einige Sekunden lang drückt. Es ertönt wieder ein Bestätigungston und die Sperre ist aufgehoben. Die AS-Taste kann man dann wieder los lassen.
  6. Hat man den falschen Code eingegeben, erscheint 9 SAFE und nach einigen Sekunden „9 – – – -„. Jetzt hat man nur noch 9 Versuche…
  7. War der Code korrekt, führt das Gerät noch einen Suchlauf durch und kann dann wieder normal genutzt werden.

 

mod_rewrite – 301 Redirects per .htaccess

Gestern habe ich die Adresse meines Blogs geändert. Das war dann der Zeitpunkt, um mich etwas intensiver mit der Datei .htaccess und mod_rewrite zu beschäftigen. Ziel war, das alle alten Links weiterhin funktionieren und einfach auf die neue Domain weitergeleitet werden.

Hierzu legt man zunächst auf dem alten Webspace eine Datei .htaccess im Webserver-root an.

Als erstes muss man in die Datei

RewriteEngine On

reinschreiben. Damit wird das mod_rewrite aktiviert.

Die nächsten Befehle, die von der alten auf die neue Domain umleiten, sind dann:

RewriteCond %{HTTP_HOST} ^alte-domain.de [NC,OR]
RewriteCond %{HTTP_HOST} ^www.alte-domain.de [NC]
RewriteRule ^(.*)$ http://www.neue-domain.de/$1 [L,R=301,NC]

Das sind auch die Befehle, die ich verwendet habe – Domainnamen natürlich angepasst. Wenn man jetzt aber auch die Links innerhalb der Seite geändert hat – z.B. wenn man von einem Blog-System auf ein anderes umstellt, dann macht es unter Umständen Sinn, das man von Unterseiten der alten Domain auf die Startseite der neuen Domain verweist. Das geht so:

RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://www.neue-domain.de/ [L,R=301]

Seit es kostenlose SSL-Zertifikate dank Let’s Encrypt gibt, spricht auch nichts mehr dagegen, bei privaten Projekten SSL einzusetzen. Nun will man eventuell, das eine Seite nur noch per SSL ausgeliefert wird. Auch hier hilft mod_rewrite weiter. Mit dem folgenden kann man von nicht-SSL URLs auf welche mit SSL umleiten:

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Natürlich kann man mit mod_rewrite noch viel mehr machen. Aber die obigen Schnipsel sind schonmal das wichtigste, was man häufig braucht.

Aus weiland-thomas.de wird knowblog.de – alles neu?

Alles neu macht der Mai? Nicht ganz, in dem Fall ist es nun schon Juni geworden.

Seit einiger Zeit schon plane ich, diesem Blog eine neue Adresse zu geben und jetzt ist es endlich so weit. Ab sofort ist mein Blog – oder besser gesagt mein „öffentlicher, digitaler Notizzettel“ unter der neuen Adresse knowblog.de erreichbar.

Aber keine Angst: alle alten Links werden per mod_rewrite / .htaccess umgeleitet! Somit sollten alle Links auf diesen Blog weiterhin funktionieren.

Inhaltlich soll sich nicht allzuviel ändern. Ich werde weiterhin über Technik und Themen die mich beschäftigen oder Fragen die mir gestellt wurden und die auch für andere interessant sind berichten. Da ich im Mai Nachwuchs bekommen habe, wird wohl auch zu dem Thema nun ab und an mal ein Eintrag hier erscheinen…