Обратный прокси в CakePHP? - PullRequest
       10

Обратный прокси в CakePHP?

0 голосов
/ 28 октября 2009

У меня есть приложение CakePHP и следующие директивы в моем httpd.conf

ProxyRequests off
ProxyPass /forum/ http://somesite.com/phpbb3
ProxyPass /gallery/ http://someothersite.com/gallery3
<Location /forum/>
        ProxyPassReverse /
</Location>
<Location /gallery/>
        ProxyPassReverse /
</Location>

Без CakePHP это работает нормально - но поскольку CakePHP использует свою собственную логику перенаправления из rout.php и других источников, кажется, что она переопределяет любые настройки прокси, поэтому любой вызов "/ community" на моем сервере следует по умолчанию пути ищу контроллер под названием CommunityController.

Моя проблема здесь в том, что я хочу иметь один сервер, который обслуживает несколько приложений, но не затрагивать его для пользователя - поэтому полное PHPBB-приложение может, например, запускаться в каталоге "/ forum", как если бы это был контроллер в CakePHP.

Кто-нибудь делал это раньше, и можно ли это сделать? Почему mod_rewrite и / или файл route.php переопределяют мои директивы mod_proxy ??

1 Ответ

1 голос
/ 29 октября 2009

Возможно, вместо использования mod_proxy, вы можете использовать mod_rewrite для создания директивы RewriteRule с флагом [P] (прокси) в сочетании с флагом [L] (последнее правило).

'proxy | P' (принудительный прокси):

Этот флаг заставляет заменяющую часть быть внутренне отправлено как запрос прокси и немедленно (перезапись останавливается вот) поставь через прокси модуль. Вы должны убедиться, что строка подстановки является допустимым URI (обычно начинается с http://hostname), который может быть обработан модулем прокси Apache. Если не, вы получите ошибку от прокси модуль. Используйте этот флаг для достижения более мощная реализация Директива ProxyPass, для отображения удаленного содержание в пространство имен локальный сервер.

Примечание: mod_proxy должен быть включен в Чтобы использовать этот флаг.

'last | L' (последнее правило):

Остановите процесс переписывания здесь и не применяется больше переписывать правила. это соответствует последней команде Perl или команда перерыва в C. Используйте это флаг, чтобы предотвратить в настоящее время переписанный URL от переписанного далее по следующим правилам. За Например, используйте его, чтобы переписать URL-адрес корневого пути ('/') к реальному, например, '/e/www/'.

...