Tips und Tricks

Weiterleitung auf HTTPS

Wenn Sie ein TLS-Zertifikat eingebunden haben, ist es empfehlenswert, alle HTTP-Anfragen auf HTTPS weiterzuleiten. Das können Sie mit der folgenden .htaccess-Datei erreichen:

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_HOST}/$1 [NC,L]

Gzip Komprimierung

Auf allen Managed Server von Providerdienste.de ist mod_deflate im Apache aktiviert. Somit kann man für seine Webseite die Gzip Komprimierung aktivieren.

.htaccess Eintrag

Fügen Sie folgenden Eintrag in Ihrer .htaccess Datei im Webroot ein:

AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/xml application/xhtml+xml application/rss+xml application/javascript application/x-javascript

Nun ist die Gzip Komprimierung aktiviert.

Für PHP per php.ini

Wenn Seiten per PHP ausgegeben werden, muss die GZIP Kompression in der php.ini aktiviert werden:

output_handler = Off
zlib.output_compression = On
zlib.output_handler = ob_gzhandler

Expire Header für Browser Caching

Um Browser Caching besser zu nutzen, können Sie auf Ihrem Managed Server Expire Header für die jeweiligen Webseite setzen. Expire Header werden in der .htaccess Datei im Webroot gesetzt. Nachfolgend eine Übersicht an möglichen Expire Header:

# Aktivierung des Expire Controls
ExpiresActive On

# Standardwert setzen: 1 Stunde nach Abruf
ExpiresDefault "now plus 1 hour"

# CSS and JS:
ExpiresByType text/css "now plus 1 week"
ExpiresByType application/javascript "now plus 1 week"
ExpiresByType application/x-javascript "now plus 1 week"

# Bilddaten:
ExpiresByType image/bmp "now plus 1 month"
ExpiresByType image/gif "now plus 1 month"
ExpiresByType image/jpeg "now plus 1 month"
ExpiresByType image/jp2 "now plus 1 month"
ExpiresByType image/pipeg "now plus 1 month"
ExpiresByType image/png "now plus 1 month"
ExpiresByType image/svg+xml "now plus 1 month"
ExpiresByType image/tiff "now plus 1 month"
ExpiresByType image/vnd.microsoft.icon "now plus 1 month"
ExpiresByType image/x-icon "now plus 1 month"
ExpiresByType image/ico "now plus 1 month"
ExpiresByType image/icon "now plus 1 month"
ExpiresByType text/ico "now plus 1 month"
ExpiresByType application/ico "now plus 1 month"
ExpiresByType image/vnd.wap.wbmp "now plus 1 month"
ExpiresByType application/vnd.wap.wbxml "now plus 1 month"
ExpiresByType application/smil "now plus 1 month"

# Audiodaten:
ExpiresByType audio/basic "now plus 1 month"
ExpiresByType audio/mid "now plus 1 month"
ExpiresByType audio/midi "now plus 1 month"
ExpiresByType audio/mpeg "now plus 1 month"
ExpiresByType audio/x-aiff "now plus 1 month"
ExpiresByType audio/x-mpegurl "now plus 1 month"
ExpiresByType audio/x-pn-realaudio "now plus 1 month"
ExpiresByType audio/x-wav "now plus 1 month"

# Filmdaten:
ExpiresByType application/x-shockwave-flash "now plus 1 month"
ExpiresByType x-world/x-vrml "now plus 1 month"
ExpiresByType video/x-msvideo "now plus 1 month"
ExpiresByType video/mpeg "now plus 1 month"
ExpiresByType video/mp4 "now plus 1 month"
ExpiresByType video/quicktime "now plus 1 month"
ExpiresByType video/x-la-asf "now plus 1 month"
ExpiresByType video/x-ms-asf "now plus 1 month"

Wie verhindere ich die Mehrfachausführung von Cronjobs?

Oft ist die Mehrfachausführung von Cronjobs ein Problem für Anwendungen. Dies kann auf Ihrem Managed Server zu einer hohen Last, Störungen in Skripten oder gar Ausfällen von Diensten führen. Doch wie verhindert man die mehrfache Ausführung von Cronjobs auf Managed Servern?

Dazu gibt es verschiedene Lösungsansätze. Einer davon ist mittels des Befehls flock. Dieser setzt sogenannte Locks (Sperren) für Shell Skripte. Nachfolgend finden Sie jeweils ein Beispiel zur Ausführung eines Shell-Skripts und eines PHP-Skripts:

# Ausführung eines Shell Skripts
flock -n /tmp/cronSkript.lock -c "/home/einNutzer/cronSkript.sh"

# Ausführung eines PHP Skripts
flock -n /tmp/cronSkript.lock -c "/usr/local/pd-admin/bin/php-7.2-cli -c /home/einNutzer/php.ini /pfad/zum/phpSkript.php"

Bei Ausführung des Cronjobs wird nun eine Datei unter /tmp angelegt. Bei Ausführung des Cronjobs prüft flock, ob diese Datei existiert.

Dabei gibt man mit -n an, dass flock nicht warten soll bis die Datei unter /tmp entfernt wird. Dies könnte dazu führen, dass sich Prozesse anstauen. Stattdessen wird der Befehl direkt beendet.

Mit dem Parameter -c gibt man den auszuführenden Befehl an. Die Anführungszeichen sind in jedem Fall notwendig, wenn der Befehl Leerzeichen enthält.

Wichtiger Hinweis:

Bei mehreren Cronjobs muss darauf geachtet werden unterschiedliche Namen der Lock Files anzugeben:

# Cronjob A:
flock -n /tmp/cronSkript_A.lock -c "/home/einNutzer/cronSkript.sh"

# Cronjob B:
flock -n /tmp/cronSkript_B.lock -c "/home/einNutzer/WeiteresCronSkript.sh"

Sperren von Bots / Crawler per htaccess Datei

Das Sperren von „bösen“ oder unerwünschten Bots / Crawler kann mittels Rewrite Rule in einer htaccess Datei realisiert werden:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (BöserBot|BöserCrawler|IrgendwasAgent) [NC]
RewriteRule (.*) - [F,L]

In den runden Klammern werden die User Agents eingetragen und durch senkrechte Striche getrennt. Die User Agents können durch Analyse der Access Logfiles identifiziert werden. Zum Beispiel so:

cat /Pfad/zum/access.log | awk -F\" '{print $6}' | sort -u