mod_proxy сопоставить http://myserver/game с http://localhost:5732/?

mod_proxy сопоставить http://myserver/game с http://localhost:5732/?

Вопрос нуб. У меня есть URL

 http://myserver.com/game

и хотел бы вызвать внутренний ресурс

 http://localhost:5732/

Я пытался:

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

но возвращаемый HTML содержал ссылки, к которым не был добавлен префикс /game/, а JS и CSS сломались. Поэтому я попробовал:

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

но это отправляет перенаправление (что, конечно, не работает) в браузер.

В чем я не прав? Моя цель:

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

Помощь будет высоко оценена.

решение1

Если у вас достаточно новая версия Apache (2.4+), вы можете попробоватьmod_proxy_html

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

Для более старых версий Apache вы можете попробоватьmod_substitute. Однако, это требует от вас вручную писать ваши регулярные выражения. Это может быть отправной точкой:

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>

Конечно, точная конфигурация будет зависеть от того, какой вывод вы в данный момент получаете от своего игрового сервера.

решение2

Первая версия, которую вы сделали, с ProxyPass и ProxyPassReverse, является наиболее распространенным способом сделать то, что вам нужно. Проблема в том, что то, что вы запустили на localhost:5732, создает HTML, который будет отправлен обратно, и он не знает, что он не называется localhost:5732. Ваш proxypass не изменяет страницы, через которые он проходит, поэтому, если ваша игра содержит все неправильные ссылки, вы увидите именно это.

Итак, чтобы это заработало, вам нужно перенастроить вашу игровую штуковину так, чтобы она знала, что ее ссылки и т. д. следует представлять как your.server/game вместо localhost.5732.

Связанный контент