c't 26/2018
S. 166
Praxis
Nginx-Proxy mit Let's Encrypt
Aufmacherbild
Bild: Albert Hulm

Ausgewildert

Let’s Encrypt und Nginx für alle, die nicht alles dockern

Mit Docker-Containern erwirbt der eigene Server ruckzuck neue Fähigkeiten. Aber wer nicht alle Dienste dockert, kann keine fertigen Container-Images für Nginx-Reverse-Proxy und automatische Zertifikatsbeschaffung bei Let’s Encrypt benutzen. Wir zeigen, wie Sie beides per Hand so einrichten, dass es kaum mehr Arbeit macht.

Docker ist toll! Die Container-Images nehmen einem einiges an Arbeit ab und erlauben es, viel schneller neue Webdienste auszuprobieren, sie aber auch ruckzuck und restlos wieder zu entfernen. Wer heutzutage einen Root- oder V-Server betreibt, will darauf nicht verzichten. Doch oft laufen auf dem Server noch zahlreiche Dienste aus einer Zeit vor Docker. Die hat man damals sorgsam per Hand konfiguriert und über Jahre gepflegt. All diese Dienste lassen sich in Container umziehen, aber dafür muss man eigene Images bauen, was für einen einzelnen Dienst schon mehrere Stunden Arbeit bedeuten kann.

Den eigenen Server kann man daher meist nicht auf einen Schlag dockern, selbst wenn man sich das ganze Wochenende Zeit nimmt. Docker ist jedoch schnell installiert und der erste Container läuft nach wenigen Minuten [1]. Der Container kommt aber nicht an Port 80 oder 443, da beides noch von einem Webserver belegt wird, beispielsweise Nginx. Nginx liefert noch diverse Dienste aus, die nicht in Containern laufen. Der in c’t 4/2018 empfohlene Container mit Nginx-Proxy und Let’s-Encrypt-Automatik [2] kann den händisch installierten Nginx nicht ersetzen, da das alle Dienste außerhalb von Containern deaktivieren würde. Die Lösung besteht darin, den bereits installierten Nginx als Reverse-Proxy einzurichten und einen ACME-Client für Let’s Encrypt zu installieren. Der Reverse-Proxy nimmt alle Anfragen von außen entgegen und verteilt sie an andere Web- oder CGI-Server.