Wie können LocationMatch und ProxyPassMatch kombiniert werden?

9

Ich richte einen Apache 2.4.6 Server auf einem internen Rechner zu Testzwecken ein. Einer der Dinge, die der Apache-Server tun soll, ist ein Reverse-Proxy für einen anderen Server auf localhost: 3030.

Der Server auf localhost: 3030 erwartet einen von einigen Dataset-Namen auf seiner ersten Pfad-Ebene (für den Moment besteht das Set nur aus dem Dataset experimental , aber einige weitere werden später hinzugefügt), also bin ich versuchen, das vom angeforderten Pfad zu übergeben.

In meinem vhost funktioniert das:

%Vor%

Für zusätzliche Datensätze könnte ich das kopieren und experimental durch die anderen Datasetnamen ersetzen. Offensichtlich führt dies zu einer Menge Code-Duplizierung / Redundanz, was sowohl eine Fehlerquelle als auch einen Wartungs-Horror darstellt.

Deshalb möchte ich etwas flexibler werden und mehrere Datensätze in einem einzigen Block behandeln. Dies sollte mit der LocationMatch -Direktive möglich sein.

Wie von diesem Kommentar und diese Seite , muss ich ProxyPass ProxyPassMatch wenn man das innerhalb von LocationMatch block. Im Wesentlichen geben die Dokumente Folgendes an:

  

Dasselbe wird in einem LocationMatch-Bereich vorkommen, aber ProxyPass interpretiert die Regexp nicht als solche, daher ist es in diesem Fall notwendig, ProxyPassMatch zu verwenden.

Die LocationMatch docs erklären:

  

Ab 2.4.8 werden benannte Gruppen und Rückverweise erfasst und in die Umgebung mit dem entsprechenden Namen mit dem Präfix "MATCH_" und in Großbuchstaben geschrieben. Dadurch können Elemente von URLs innerhalb von Ausdrücken und Modulen wie mod_rewrite referenziert werden. Um Verwirrung zu vermeiden, werden nummerierte (unbenannte) Rückwärtsreferenzen ignoriert. Benutzt stattdessen benannte Gruppen.

Diese Information ist erst ab Apache 2.4.8 gültig, was vermutlich darauf zurückzuführen ist, dass das Folgende bei meiner 2.4.6-Installation nicht funktioniert:

%Vor%

Auf der anderen Seite diese Seite und Diese Veröffentlichung bedeutet, dass der numerische Gruppenindex ( ) verwendet werden kann (da der Hilfetext nur gültig ist) Seit httpd 2.4.8, mein Verdacht / hoffe ist, dass die numerische Referenz vor 2.4.8 (?)

funktioniert

Jedenfalls habe ich das versucht:

%Vor%

Gemäß den Protokollen ruft der interne Aufruf http://localhost:3030// anstelle von http://localhost:3030/experimental/ auf, wenn der Pfad experimental auf der vhost-URL angefordert wird.

Die ProxyPassMatch docs sagen nur:

  

Wenn es in einem LocationMatch-Abschnitt verwendet wird, wird das erste Argument weggelassen und die Regexp-Anweisung wird von LocationMatch abgerufen.

Der Text enthält jedoch kein Beispiel dafür, wie LocationMatch und ProxyPassMatch kombiniert werden können. Was mache ich falsch?

    
O. R. Mapper 04.02.2014, 09:35
quelle

1 Antwort

0

Das funktioniert auf Apache 2.4.29:

%Vor%

Die von Apache aufgerufene URL ist zum Beispiel

%Vor%

Das (?: ist entscheidend, wenn Sie in diesem Beispiel Klammern verwenden.

    
quelle

Tags und Links