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!

# 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!

Dominion

Dominion

Linux Systemadministrator

Das könnte Dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.