mod_proxy ordnet http://myserver/game http://localhost:5732/? zu.

mod_proxy ordnet http://myserver/game http://localhost:5732/? zu.

Anfängerfrage. Ich habe eine URL

 http://myserver.com/game

und möchte eine interne Ressource anrufen

 http://localhost:5732/

Ich habe es versucht:

AllowCONNECT 5732
ProxyPass /game/ http://localhost:5732/ nocanon
ProxyPassReverse /game/ http://localhost:5732/

aber das zurückgegebene HTML enthielt Links, denen /game/ nicht vorangestellt wurde, und JS und CSS funktionierten nicht. Also habe ich Folgendes versucht:

 RewriteEngine On
 RewriteRule ^/game(.*) http://localhost:5732$1

aber dadurch wird eine Weiterleitung (die natürlich nicht funktioniert) an den Browser gesendet.

Was mache ich falsch? Mein Ziel ist:

 http://myserver/game --> http://localhost:5732/ 

Hilfe wird sehr geschätzt

Antwort1

Wenn Ihre Apache-Version aktuell genug ist (2.4+), können Sie versuchenmod_proxy_html

ProxyPass /game http://localhost:5732 nocanon
ProxyPassReverse /game http://localhost:5732
<Location /game/>
    ProxyHTMLEnable On
    ProxyHTMLURLMap / /game/
</Location>

Bei älteren Versionen von Apache können Sie versuchen mitmod_ersatz. Dies erfordert jedoch, dass Sie Ihre regulären Ausdrücke manuell schreiben. Dies könnte ein Ausgangspunkt sein:

ProxyPass /game http://localhost:5732 nocanon
ProxyPassReverse /game http://localhost:5732
<Location /game/>
    SetOutputFilter SUBSTITUTE
    Substitute s|href='/|href='/game/|nq
    Substitute s|src='/|src='/game/|nq
</Location>

Die genaue Konfiguration hängt natürlich davon ab, welche Ausgabe Sie derzeit von Ihrem Spieleserver erhalten.

Antwort2

Die erste Version, die Sie mit ProxyPass und ProxyPassReverse erstellt haben, ist die gängigste Methode, um das zu erreichen, was Sie möchten. Das Problem ist, dass das, was Sie auf localhost:5732 laufen haben, das HTML erstellt, das zurückgesendet wird – und es weiß nicht, dass es nicht localhost:5732 heißt. Ihr Proxypass ändert die Seiten, die durchgeleitet werden, nicht. Wenn Ihr Spiel also alle falschen Links enthält, werden Sie diese sehen.

Damit dies funktioniert, müssen Sie Ihr Spiel-Ding neu konfigurieren, damit es seine Links usw. als your.server/game und nicht als localhost.5732 anzeigt.

verwandte Informationen