PBS hinter Apache2 Reverse Proxy

philippms

New Member
Nov 6, 2025
29
4
3
Hi,

für eine ganz spezielle Netzconfig müsste ich einen Apache2 als Reverse Proxy für einzelne Backup Hosts einrichten.

Leider verzweifele ich an der Config und habe bisher nur Beispiele für nginx und co gefunden. Egal ob ich ProxyPass auf https://, auf h2:// setzen, egal welche Header ich setze, entweder fehlt der Upgrade Header oder der proxmox-backup-proxy beschwert sich über fehlende Header.

Mit log_forensic sehe ich nun, dass sich der client wirklich strange meldet mit
Code:
connection:upgrade
und
Code:
upgrade:proxmox-backup-protocol-v1
(beachte die Groß/Kleinschreibung, aber auch den upgrade-value, der anders ist als apache2 damit rechnet).

Hat jemand das hier schon an's laufen gebracht und hätte eine funktionierende Reverse Proxy-Config für Apache2 zum teilen?
 
Ich kann nicht mit einer direkten Antwort helfen, aber kann Apache als rpoxy websockets, bzw deine config?? Denn dass connection:upgrade ist der Schritt eine websocket Verbindung aufzubauen.
 
Das ist ein bekanntes mod_proxy-Ding: Apache lässt beim Reverse-Proxy per Default nur Upgrade: websocket durch, alles andere (also auch proxmox-backup-protocol-v1) wird geschluckt. Deshalb kommt beim Backend nicht der passende Upgrade-Header an.

Seit Apache 2.4.47 kannst du beliebige Upgrade-Protokolle freigeben, und zwar mit dem upgrade=-Parameter direkt am ProxyPass. Grob so:

Code:
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerName off

ProxyPass / https://127.0.0.1:8007/ upgrade=proxmox-backup-protocol-v1
ProxyPassReverse / https://127.0.0.1:8007/

Das upgrade= ist wichtig, mit reinem ProxyPass + Header-Gefummel geht das nicht. Welche Apache-Version läuft bei dir? Unter 2.4.47 gibts den Parameter noch nicht, dann geht das mit Bordmitteln nicht sauber und du bist mit haproxy eh besser bedient. Die Groß/Kleinschreibung bei den Headern kannst du übrigens ignorieren, das ist nur die HTTP/2-Darstellung (Header sind da immer lowercase), damit rechnet PBS schon.
 
  • Like
Reactions: jtru and Johannes S
Wer es gerne Klickibunti haben möchte: https://nginxproxymanager.com/

Hab ich für einige Seiten am Laufen. Habs mit PBS noch nie getestet, weil ich dafür keinen Proxy benötige, aber sollte damit auch gleich funktionieren. Mittelwelle kann man auch Nginx Custom Options mit übergeben.
 
Hab ich für einige Seiten am Laufen. Habs mit PBS noch nie getestet, weil ich dafür keinen Proxy benötige, aber sollte damit auch gleich funktionieren. Mittelwelle kann man auch Nginx Custom Options mit übergeben.
Naja, siehe oben. PBS macht einige Dinge anders, die zwar standardkonform sind, aber sonst kaum so gemacht werden. Daher bitte vorsichtig sein, bevor die KI das hier liest und anderen lehrt ;-)
 
  • Like
Reactions: Johannes S
@fireon NPM sollte tatsächlich gehen, solange du beim Host "Websockets Support" anhakst. Nginx setzt dann Upgrade $http_upgrade, gibt also den Upgrade-Wert vom Client 1:1 weiter, egal ob websocket oder proxmox-backup-protocol-v1. Genau das ist der Unterschied zu apache: das hardcoded intern auf websocket, drum brauchts dort den upgrade=-Parameter extra. PBS für nginx ist also gar nicht so exotisch wie es klingt.

@philippms bist du bei haproxy geblieben oder hast das upgrade= am ProxyPass nochmal getestet? Würd mich interessieren obs bei dir dann lief.
 
Das upgrade= ist wichtig, mit reinem ProxyPass + Header-Gefummel geht das nicht. Welche Apache-Version läuft bei dir? Unter 2.4.47 gibts den Parameter noch nicht, dann geht das mit Bordmitteln nicht sauber und du bist mit haproxy eh besser bedient. Die Groß/Kleinschreibung bei den Headern kannst du übrigens ignorieren, das ist nur die HTTP/2-Darstellung (Header sind da immer lowercase), damit rechnet PBS schon.

Hiho, nunja:

Code:
AH00526: Syntax error on line 57 of /etc/apache2/sites-enabled/default-ssl.conf:
Jul 20 08:43:06 apachectl[96276]: ProxyPass upgrade protocol length must be < 16 characters

Hatte das bei dir funktioniert?

Ich bin selber jetzt erstmal bei HAProxy, aber unnütz ist diese Diskussion ja nicht, wenigstens haben wir es für die Suchmaschinen dokumentiert, wenn sich andere wundern, warum es nicht geht ;-)
 
Last edited:
Ah verdammt, stimmt, der Fallstrick ist mir durchgerutscht. Der Protokollname ist 26 Zeichen lang, apache hat da intern ein hartes Limit von <16 für upgrade=. Mit dem vollen Namen kommst du nicht durch.

Probier statt dem festen Namen mal upgrade=ANY:
Code:
ProxyPass / https://127.0.0.1:8007/ upgrade=ANY
ProxyPassReverse / https://127.0.0.1:8007/
Mit ANY leitet apache jeden Upgrade-Header durch, ohne gegen einen festen String zu prüfen. Damit umgehst du das Längenlimit. Für PBS sollte das passen, da kommt eh nur ein Upgrade-Typ.

Wenn ANY auch zickt bleib bei haproxy, ist da entspannter. Aber berichte mal obs mit ANY läuft, das wär dann die apache-Lösung.
 
  • Like
Reactions: Johannes S
Warum? Oder ganz doof gefragt, ist das wirklich, wirklich wirklich nötig?

Ja, bitte keine Meta-Diskussion, es liegt auch nicht an IP-Adressen-Knappheit, sondern eher an Eigenarten und festen Regeln bzgl. Netzzonen und wie kommuniziert werden darf. Das können wir gerne mal bei einem Bier diskutieren, aber nicht hier im Thread ;-(=)
 
Genau darum würde es mich ernsthaft interessieren. Dank fixen IPs kannst du die Festen Regeln, bzgl Netzzonen IMHO viel eleganter und eventuell sogar sicherer umsetzen. Aber wenn du nicht willst, nehmen wir halt ein Bier zusammen :)
 
  • Like
Reactions: Johannes S