Может ли обратный прокси-сервер Apache исключать определенные типы файлов?

#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 , вероятно, могут объяснить это лучше, чем я.