SSL-Verbindung zwischen Reverse-Proxy und Backend-Server aktiv halten

SSL-Verbindung zwischen Reverse-Proxy und Backend-Server aktiv halten

Ich habe einen Back-End-Server (Apache), der von den meisten unserer Benutzer zu weit entfernt ist. Unsere Idee besteht daher darin, einen näheren Reverse-Proxy zu implementieren, der als Cache fungiert.

Auf den ersten Blick hat es wunderbar funktioniert. Die zwischengespeicherten statischen Dateien werden extrem schnell bereitgestellt, aber für alles andere muss der Reverse-Proxy (NGINX) eine Verbindung zum Back-End-Server herstellen, was einige Zeit für den SSL-Handshake benötigt, was diese ersten Anfragen langsam macht.

Ich habe nach Informationen hierzu gesucht, konnte aber keine Möglichkeit finden, diese Verbindung aufrechtzuerhalten. Gibt es eine Möglichkeit, dies zu tun?

Ich habe sogar versucht, mehr über WebSockets zu erfahren, aber alle Implementierungen, die ich finden konnte, dienten dazu, eine bestimmte Anfrage zu beantworten und nicht dazu, die Verbindung zwischen den beiden Webservern (NGINX am Reverse-Proxy und Apache am Back-End) aufrechtzuerhalten.

Hat jemand von Ihnen eine Idee oder einen Tipp, was man studieren/verwenden/suchen könnte, um das zu erreichen?

Vielen Dank im Voraus!

Antwort1

In nginx können Sie nur angebenkeepalivefür eine Upstream-Verbindung, wenn die Verbindung definiert ist in einemupstreamBeispiel:

upstream backend {
    server private-api.example.com:443;

    keepalive 32;
}

Gibt keepalivedie maximale Anzahl gleichzeitig offener Verbindungen zu den Upstream-Servern proArbeitsprozess.

Um den Upstream zu verwenden, geben Sie seinen Namen anstelle proxy_passder Backend-Adresse an.

Wenn Sie beispielsweise zuvor Folgendes verwendet haben:

     proxy_pass https://private-api.example.com:443;

Sie würden es wie folgt ändern:

     proxy_pass https://backend;

Ersetzen Sie den definierten Namen wörtlich durch den Namen des Upstreams server.

Sie müssen außerdem die HTTP-Version auf 1.1 setzen (weil der Standardwert absurderweise 1.0 ist) und den Verbindungsheader löschen:

    proxy_http_version 1.1;
    proxy_set_header Connection "";

Denken Sie daran, dass keepalive_timeoutSie auch einen Wert definieren können, den upstreamSie möglicherweise anpassen müssen. Der Standardwert beträgt 60 Sekunden. Wenn eine Verbindung also so lange inaktiv ist, wird sie geschlossen, auch wenn weniger als keepaliveVerbindungen offen sind. Der Backend-Server verfügt über ein eigenes Keepalive-Timeout, das Sie ebenfalls separat anpassen müssen.

verwandte Informationen