Falsche Browser-URL des Apache-Proxys

Falsche Browser-URL des Apache-Proxys

Ich verwende Folgendes und mod_proxy, um alle Anfragen für meine „API“-Subdomäne an meinen Java-Webdienst weiterzuleiten, der sich auf meinem Tomcat VirtualHostbefindet .webapps/webservice

<VirtualHost *:80>
    ServerName api.mydoamin.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass /webservice http://localhost:8080
    ProxPassReverse / http://localhost:8080
</VirtualHost>

Mein Problem besteht darin, dass ich, wenn ich „api.mydomain.com“ eingebe, zu „api.mydomain.com/webservice“ weitergeleitet werde und eine 404-Fehlermeldung erhalte, weil „webservicewebservice“ nicht verfügbar ist.

Weiß jemand, was zu tun ist?

Lösung: Obwohl ich diese Lösung schon einmal ausprobiert hatte, hatte Stony recht! Das Problem in meinem Fall war, dass ich Tomcat neu starten musste, damit es funktionierte, auch wenn ich dort nichts geändert hatte. Ich habe Apache mehrmals neu gestartet, aber das hat nichts geändert.

Antwort1

Ich weiß nicht, ob ich Ihr Problem richtig verstehe, aber wenn Sie das nicht webservicein Ihrer URL möchten, setzen Sie Ihren Proxy-Pass auf /.

<VirtualHost *::80>
    ServerName api.mydoamin.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://localhost:8080/webservice/
    ProxPassReverse / http://localhost:8080/webservice/
</VirtualHost>

Oder möchtest Du Deinen Webservice unter dieser Domain betreiben? Und Du möchtest keine Weiterleitung?

Antwort2

Nach einigen Tests und vielen, vielen Fehlern bin ich schließlich auf die folgende Lösung gekommen.

Ich habe meinen virtuellen Apache-Host wie folgt eingerichtet:

<VirtualHost *:80>
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny, allow
        Allow from all
    </Proxy>                                                                        
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/

    ServerName api.mydomain.com
</VirtualHost>

Jetzt leitet es einfach alle Anfragen an api.mydomain.commeinen Tomcat auf Port 8080 weiter, ohne auf ein bestimmtes Verzeichnis zu verweisen.

Dann habe ich Folgendes hinzugefügt /etc/tomcat7/server.xml:

<Host name="api.mydomain.com" appBase="webapps">
    <Context path="" docBase="webservice" />
</Host>

Wie ProxyPreserveHostin meinem virtuellen Apache-Host aktiviert, erhält Tomcat den Hostnamen der ursprünglichen Anfrage und kann selbst entscheiden, welcher Inhalt ausgeliefert werden soll.

Dabei appBase="webapps"wird der Inhalt scheinbar aus dem Stammverzeichnis ausgeliefert, auch wenn dieser woanders liegt.

verwandte Informationen