Docker vhosts & APIs

Hallo,
auf meinem Debian Stretch Server habe ich nun Docker sauber am Laufen, in meinem Fall mit Portainer zur Verwaltung sowie Gitlab.
Für beide habe ich ein eigenes Web angelegt mit LetsEncrypt Zertifikaten.

Als Apache Direktive habe ich z.B. beim Portainer
Code:
<Location />
    ProxyPass http://127.0.0.1:9000/
    ProxyPassReverse http://127.0.0.1:9000/
    RequestHeader set X-Forwarded-Proto "https"
</Location>
Gleiches für Gitlab mit entsprechend anderem Port.
Das klappt ganz gut.

Beide Tools haben aber eine eingebaute Konsole bzw. WebIDE welche auf APIs davon gehen und diese funktionieren damit leider nicht.
Für Portainer habe ich zusätzlich das hier versucht, ohne Erfolg:
Code:
<Location /portainer/api/websocket/>
    ProxyPass http://127.0.0.1:9000/api/websocket/
    ProxyPassReverse http://127.0.0.1:9000/api/websocket/
    RewriteEngine on
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
    RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
    RewriteRule /api/websocket/(.*) ws://127.0.0.1:9000/api/websocket/$1 [P]
</Location>

Rufe ich Portainer direkt mit IP-Adresse:port auf klappt die Konsole.
Ähnliches bei Gitlab, mit IP klappts, mit dem VHost Proxy nicht.

Hoffe ich finde hier Leute mit Docker / Apache Erfahrung.

LG
 
Hallo,

ich konnte das Thema selbst lösen.

Neben dem http_proxy musste auch das proxy_wstunnel Apache Modul aktiviert werden.

LG
 
Hallo,
ich muss das Thema nochmal hervorholen. Sind die Apache Direktiven aktiv, werden mir die Lets Encrypt Zertifikate nicht erneuert.
Die Console bringt, dass der Prozess fehlgeschlagen ist.

Erst wenn ich die Direktiven entferne und die standard HTML Seite geladen wird, wird das Zertifikat erneuert. Anschließend kann ich die Direktiven wieder aktivieren aber es funktioniert dann eben nur wieder für 3 Monate.
 

Till

Administrator
Das Problem ist dass Du die Requests für LE über die die certs authentifiziert werden mit umleitest, die müssen aber von der Umleitung ausgeschlossen werden, sie müssen also lokal bleiben damit certbot funktioniert. Das sind requests die mit /.well-known/acme-challenge/ beginnen.
 

Till

Administrator
soweit ich weiß hat Apache ja auch if construkte für die config, vermutlich könntest Du Deinen proxy block in so eine if abfrage packen, habe ich aber nicht getestet.
 
Hallo,

ich hab mal folgendes eingetragen:
Code:
<IfModule mod_proxy.c>
  <Location />
    ProxyPass http://127.0.0.1:9001/
    ProxyPassReverse http://127.0.0.1:9001/
    RequestHeader set X-Forwarded-Proto "https"
  </Location>
</IfModule>

Die Frage ist, wie ich das jetzt testen kann, oder ob ich bis Ablauf in ca. nem viertel Jahr warten muss?
Obwohl, wenn ich nun Letsencrypt deaktiviere, speichere und nach übernahme wieder aktiviere? Holt der Bot dann ein neues Zertifikat???
 

Till

Administrator
Ich denke das wird so nicht gehen, denn Du leitest ja weiter alles um. Du fragst mit dem jetzt hinzugefügten if ja nur ab ob das Modul mod_proxy installiert ist.
 
Die Lösung steht bereits in einem anderen Post hier bzw. hier

Meinem obigen Vhost Snippet füge ich einfach folgendes davor:
Code:
ProxyPass /.well-known/acme-challenge !

Soweit klappts...
 

Werbung

Top