Um die Webseite zu beschleunigen eignet sich Varnish-Cache hervorragend. Die Entwickler möchten Varnish klein halten, somit hat eine große SSL Library keinen Platz im Code.
An dieser Stelle kann Nginx als flinker TLS/SSL Proxy aushelfen. Dieser Beitrag stützt sich auf die Nginx Konfiguration, alle anderen Tutorials werden verlinkt.
Punkt 1: Apache erhält neue Ports
Damit Apache nicht die Ports blockiert sollten wir diese zuerst ändern, bitte folgt meiner Anleitung: Plesk Apache Ports ändern
Punkt 2: Varnish installieren und konfigurieren
Um Varnish auf Port 80 zu konfigurieren geht bitte nach meiner Anleitung Varnish Cache Installation unter Debian Wheezy vor.
Wenn ihr Punkt 1 übernommen habt, hat Apache den Port 8080 erhalten. Dies berücksichtigen wir in der Konfiguration von Varnish.
WICHTIG: Unbedingt die Server IP unter .host eintragen, da Plesk mit IP Adressen im vHost arbeitet, nicht mit 127.0.0.1 oder 0.0.0.0!
# Redirect requests to Apache, running on port 8080
backend apache {
.host = "SERVER_IP";
.port = "8080";
.connect_timeout = 300s;
.first_byte_timeout = 300s;
.between_bytes_timeout = 300s;
}
Punkt 3: Nginx installieren und konfigurieren
Nun kommen wir zum eigentlich Teil dieses Tutorials. Zu aller erst installieren wir Nginx, ich nehme wie immer gerne Debian.
apt-get update
apt-get install nginx
Nachdem alle Pakete installiert wurden, löschen wir den default vHost und beginnen mit unserer TLS Proxy Konfiguration. Denn auch SSL Anfragen sollen vom Varnish-Cache beschleunigt werden.
rm /etc/nginx/sites-enabled/default
Wir legen die erste TLS Proxy Konfiguration an im Format DOMAIN.de-tls-proxy.conf an.
Es reicht aus server_name und die drei ssl_ Zeilen zu bearbeiten.
server {
listen 443 ssl;
server_name www.DOMAIN.de DOMAIN.de;
ssl_certificate /etc/ssl/private/DOMAIN.de.crt;
ssl_certificate_key /etc/ssl/private/DOMAIN.de.key;
ssl_client_certificate /etc/ssl/private/sub.class1.server.ca.pem;
ssl_verify_client optional;
location / {
# Pass the request on to Varnish.
proxy_pass http://127.0.0.1;
# Pass a bunch of headers to the downstream server, so they'll know what's going on.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# Most web apps can be configured to read this header and understand that the current session is actually HTTPS.
proxy_set_header X-Forwarded-Proto https;
# We expect the downsteam servers to redirect to the right hostname, so don't do any rewrites here.
proxy_redirect off;
}
}
Wir erstellen einen Symlink und aktivieren die Konfiguration somit.
ln -s /etc/nginx/sites-available/DOMAIN.de-tls-proxy.conf /etc/nginx/sites-enabled/DOMAIN.de-tls-proxy.conf
Nginx als TLS/SSL Proxy ist bereit und kann neu gestartet werden.
/etc/init.d/nginx restart
WICHTIG: In Plesk hinterlegte SSL Zertifikate funktionieren nun nicht mehr, legt bitte für jede SSL Domain eine neue Nginx TLS Proxy Konfiguration an!