Карта mod_proxy http://myserver/game для http://localhost:5732/?

N00b вопрос. У меня есть URL

 http://myserver.com/game

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

 http://localhost:5732/

Я старался:

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

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

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

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

Что я ошибаюсь? Моя цель:

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

Помощь очень ценится

2 ответа

Решение

Если ваша версия 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>

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

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

Итак, чтобы это работало, вам нужно перенастроить вашу игру, чтобы она могла представить свои ссылки и т. Д. Как ваш. Сервер / игра вместо localhost.5732.

Другие вопросы по тегам