Plesk mit Varnish-Cache und Nginx als TLS Proxy
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!
1 2 3 4 5 6 7 8 | # 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.
1 2 | 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.
1 | 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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.
1 | 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.
1 | /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!
0