Nginx proxy Weiterleitung auf anderen Server

Hallo.
ich habe einen dockerhost unter 10.16.1.5, auf den z. B. nextcloud und das Bibliotheksprogramm läuft. Port 80 wird auf 443 umgeleitet. Je nach Subdomain landet man in einem anderen Container

bib.domain.de → conainer 1
cloud.domain.de → container2

Nun möchte ich mit sub.domain.de (Port 80) aber auf einen anderen Server im Subnetz (10.16.1.1) landet.

Hintergrund ist das ich das lm-dehydrated Paket für einen externen ldaps Zugriff nutzen möchte. Und in den docs steht

Voraussetzung für die Verwendung von linuxmuster-dehydrated ist, dass der linuxmuster-Server aus dem Internet unter dem Servernamen (FQDN), für den das Zertifikat erstellt werden soll, auf Port 80 erreichbar ist.

Oder gibt es eine andere Lösung. Auf dem dockerhost läuft eigentlich scon die nginx-letsencrypt-companion. Kann ich die dafür nutzen?

Vielen Dank, Martin

Hallo Martin,

grundsätzlich kannst man mit dem nginx als Reverse-Proxy auf jede Seite weiterleiten. Du musst im nginx lediglich eine Webseite definieren für die der Webserver zuständig sein soll. In deinem Fall könnte das so aussehen:
server {

server_name sub.domain.de;

location / {

proxy_pass http://10.16.1.1:242/;

}
listen 80;

}

Aber wenn ich dich richtig verstanden habe, willst du eigentlich was ganz anderes: Das LetsEncrypt-Zertifikat für ldaps nutzen?

Wenn du per dehydrated schon Zertifikate hast, kannst du die doch schon in der ldap-Server-Konfiguration eintragen. Wozu der nginx?

Gruß
Thomas

Hallo,

danke für die Antwort.

Der dockerhost läuft auf 10.16.1.5 und ldaps auf 10.16.1.1. LetsEncrypt läuft auf 10.16.1.5 und dehydrated würde dann auf 10.16.1.1 laufen. Port 80 und 443 werden auf 10.16.1.5 weitergeleitet und der ladps-Port auf 10.16.1.1.
Muss dann nicht 10.16.1.1 unter dem Domainname und port 80 erreichbar sein, für den dehydrated das LetsEncrypt-Zertifikat anfragt? Oder verstehe ich das falsch.

Besten Dank, Martin

Hallo Martin,

letztlich nutzt dehydrated ja auch nur den acme-Client um bei LetsEncrypt das Zertifikat zu beantragen.
Der nginx muss also nicht wirklich auf den Webserver weiterleiten, sondern lediglich eine Webseite sub.domain.de auf Port 80 bereitstellen. Dadurch bestätigt man quasi gegenüber LetsEncrypt, das man diese Domain verwaltet und man erhält das Zertifikat für sub.domain.de.

Gruß
Thomas

Hallo,

jetzt habe ich alles soweit eingerichtet. Auf dem lm-server dehydrate ausgeführt und ich bekomme folgden Fehler

"error": {
    "type": "urn:ietf:params:acme:error:unauthorized",
    "detail": "Invalid response from https://cloud.meine-schule.de/.well-known/acme-challenge/C7dxmfadMLZEpzgcJYLWVXpQBeF2nDelgsUihKeHUO4 [123.456.789.000]: \"\u003chtml\u003e\\r\\n\u003chead\u003e\u003ctitle\u003e404 Not Found\u003c/title\u003e\u003c/head\u003e\\r\\n\u003cbody\u003e\\r\\n\u003ccenter\u003e\u003ch1\u003e404 Not Found\u003c/h1\u003e\u003c/center\u003e\\r\\n\u003chr\u003e\u003ccenter\u003enginx/1.15.7\u003c/ce\"",
    "status": 403
  },
"url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/1533410444/7K7bbQ",
  "token": "C7dxmfadMLZEpzgcJYLWVXpQBeF2nDelgsUihKeHUO4",
  "validationRecord": [
    {
      "url": "http://cloud.meine-schule.de/.well-known/acme-challenge/C7dxmfadMLZEpzgcJYLWVXpQBeF2nDelgsUihKeHUO4",
      "hostname": "cloud.meine-schule.de",
      "port": "80",
      "addressesResolved": [
        "123.456.789.000"
      ],
      "addressUsed": "123.456.789.000"
    },

Kann er ja auch nicht finden, da er den falschen Server anfragt.

Jetzt hab ich’s. Ich muss das Zertifikat von 10.16.1.5 auf den lm-server kopieren.