Rewrite HTML-Links mit ProxyHTMLURLMap

Alles, was den Apache betrifft, kann hier besprochen werden.

Rewrite HTML-Links mit ProxyHTMLURLMap

Postby Robert42 » 17. October 2015 12:58

Hi,

ich möchte Apache als ReverseProxy nutzen und Requests auf localhost:8090 umleiten. Die Umleitung funktioniert auch, leider bekomme ich aber die Umschreibung der in den HTML-Seiten enthaltenen Links nicht hin. So sieht meine conf-Datei aus:

Code: Select all
SSLProxyEngine on
ServerAdmin webmaster@example.com
ServerName myserver.net
SetOutputFilter proxy-html
LogLevel warn proxy_html:trace3
ProxyHTMLExtended On
ProxyPass /yacy http://localhost:8090/
ProxyHTMLURLMap http://localhost:8090 /yacy
<Location /yacy/>
        ProxyPassReverse /
        ProxyHTMLURLMap / /yacy/
        ProxyHTMLURLMap /yacy /yacy
        RequestHeader    unset  Accept-Encoding
</Location>


Die Apache-Conf ist ergänzt um Folgendes:
Code: Select all
ProxyHTMLLinks  a               href
ProxyHTMLLinks  area            href
ProxyHTMLLinks  link            href
ProxyHTMLLinks  img             src longdesc usemap
ProxyHTMLLinks  object          classid codebase data usemap
ProxyHTMLLinks  q               cite
ProxyHTMLLinks  blockquote      cite
ProxyHTMLLinks  ins             cite
ProxyHTMLLinks  del             cite
ProxyHTMLLinks  form            action
ProxyHTMLLinks  input           src usemap
ProxyHTMLLinks  head            profile
ProxyHTMLLinks  base            href
ProxyHTMLLinks  script          src for
ProxyHTMLLinks  iframe          src

ProxyHTMLEvents onclick ondblclick onmousedown onmouseup \
                onmouseover onmousemove onmouseout onkeypress \
                onkeydown onkeyup onfocus onblur onload \
                onunload onsubmit onreset onselect onchange


Die Apache error.log meldet beim Server-Start:
Code: Select all
[Sat Oct 17 13:54:49.622793 2015] [proxy_html:trace1] [pid 8967] mod_proxy_html.c(823): [client 87.79.46.153:59768] Non-proxy request; not inserting proxy-html filter
Robert42
 
Posts: 2
Joined: 17. October 2015 12:36
Operating System: Ubuntu 14.04.3

Re: Rewrite HTML-Links mit ProxyHTMLURLMap

Postby Nobbie » 17. October 2015 15:52

Robert42 wrote:ich möchte Apache als ReverseProxy nutzen und Requests auf localhost:8090 umleiten.


Auf Grund der mannigfachen Probleme, die es da geben kann (u.a. eben die Umschreibung vorhandener Links), empfehle ich da grundsätzlich, kein Verzeichnis (a la /yacy) auf ein anderes Rootverzeichnis zu mappen (so wie hier /yacy auf http://localhost:8090/ gemapped wird resp. "geproxyd"), sondern grundsätzlich gleiches auf gleiches mappen, also wäre das hier / auf http://localhost:8090/. Das erledigt man am einfachsten damit, dass man einen VirtualHost dafür festlegt, nennen wir ihn auch "yacy":

Code: Select all
<VirtualHost *:80>
ServerName yacy
ProxyPass / http://localhost:8090/
ProxyPassReverse / http://localhost:8090/
</VirtualHost>


Dann ist die gewünschte Seite via http://yacy/ zu erreichen und meistens reicht diese Konfiguration schon komplett aus, die ganzen Probleme mit gemappten URLs und HTML Links (die absolut auf / verlinkt sind) entfallen hier, weil / auf / gemapped ist. Da musst Du nur noch "yacy" in der hosts Datei definieren (auf dem Server und ggf. auch auf anderen Rechnern im LAN, wenn sie auch Zugriff haben sollen):

127.0.0.1 yacy

oder auch


192.168.10.11 yacy


wobei 192.168.10.11 dann die LAN IP des Servers wäre.

Dann braucht man sich um das ganze URLMap Gemurkse nicht zu kümmern, es fällt gar nicht erst an.

P.S.: Wenn "yacy" dann der erste und bislang einzige VirtualHost ist, dann muss man für "localhost" auch einen VirtualHost anlegen, sonst gibt es "localhost" nicht mehr, die externe Deklaration außerhalb der VirtualHosts wird ignoriert, wenn es mindestens einen VirtualHost gibt. Also einfach die ganze Konfiguration (DocumentRoot, die Directory-Klausel mit den Options usw.) alles einen VirtualHost legen mit "ServerName localhost".
Nobbie
 
Posts: 8772
Joined: 09. March 2008 13:04

Re: Rewrite HTML-Links mit ProxyHTMLURLMap

Postby Robert42 » 18. October 2015 07:53

Hallo,
erstmal danke für die Antwort.
Ich habe mehrere virtuelle Hosts, die ich gerne alle über meinserver.de/host1/ usw. ansprechen möchte. Bei Anwendungen, die auf meinem Apache laufen ist das auch keine Problem. Yacy läuft aber auf einem anderen Server.
Der Reverse Proxy für Yacy läuft so, wie Du vorgeschlagen hast (allerdings direkt unter der Base-URL "meinserver.de"):

Code: Select all
        ProxyPass /Anwendung1 !
        ProxyPass /Anwendung2 !
        ProxyPass /Anwendung3 !

        ProxyPass / http://localhost:8090/
        ProxyPassReverse / http://localhost:8090/


Ich habe noch ein paar ProxyPass xxx ! eingefügt, damit die anderen Anwendungen weiterhin erreichbar sind.
Gibt es noch eine andere Konfigurationsmöglichkeit die mir erlaubt, yacy über meinserver.de/yacy aufzurufen ohne die URLs umschreiben zu müssen?
Robert42
 
Posts: 2
Joined: 17. October 2015 12:36
Operating System: Ubuntu 14.04.3

Re: Rewrite HTML-Links mit ProxyHTMLURLMap

Postby Nobbie » 18. October 2015 13:41

Robert42 wrote:Gibt es noch eine andere Konfigurationsmöglichkeit die mir erlaubt, yacy über meinserver.de/yacy aufzurufen ohne die URLs umschreiben zu müssen?


Nicht dass ich wüßte.
Nobbie
 
Posts: 8772
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 4 guests