#php #apache #reverse-proxy
#php #apache #обратный прокси
Вопрос:
У меня есть комбинация Apache / Passenger, обслуживающая Rails 3.x, и та же комбинация, обслуживающая Rails 2.x через обратный прокси-сервер для автономного обслуживания пассажиров. Причина, по которой я это делаю, заключается в том, что Rails 2.x использует более старую версию Ruby, чем Ruby, используемый Apache / Passenger.
Однако в приложении Rails 2.x есть немного php, который не может поддерживать Passenger Standalone. (Подтверждено Хонгли Лаем в группе обсуждения пассажиров). Хонгли предлагает исключить биты ‘php’ из обратного прокси-сервера.
Можно ли это сделать, и если да, то как?
Отредактируйте, чтобы показать, как был настроен обратный прокси-сервер:
<VirtualHost *:80>
ServerName gtt
DocumentRoot /home/purvez/www/gtt/public
RailsEnv development
PassengerEnabled off
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
Также, как был настроен обычный сайт:
<VirtualHost *:80>
ServerName testapp
DocumentRoot /home/purvez/www/testapp/public
RailsEnv development
</VirtualHost>
Ответ №1:
Вы могли бы использовать ProxyPassMatch
для исключения, следующим образом:
<VirtualHost *:80>
ServerName gtt
DocumentRoot /home/purvez/www/gtt/public
RailsEnv development
PassengerEnabled off
ProxyPassMatch .*.php$ !
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
Обратите внимание, что это приведет к тому, что все «php-биты» в виртуальном хосте с именем gtt
будут обслуживаться локально /home/purvez/www/gtt/public
.
Надеюсь, это поможет вам двигаться в правильном направлении.
Комментарии:
1. Вот такой ответ мне НРАВИТСЯ!! Большое спасибо. Насколько мне известно, не могли бы вы объяснить, что на самом деле делают символы после ProxyPassMatch. Я предполагаю, что это регулярные выражения, но я не совсем уверен. Еще раз спасибо.
2. @nexar: документы apache , вероятно, могут объяснить это лучше, чем я.