2016-05-29 2 views
1

У меня есть веб-сервер apache, прослушивающий порт 80. С apache, PHP/MySQL, основанной на базе Zend. И у меня также есть сервер узлов, прослушивающий порт 3000.Apache, Node, .htaccess

Когда клиент отправляет запрос, всегда на порт 80, поэтому он сначала обрабатывается apache. Прежде чем обращаться с запросом, я хотел бы применить следующие правила:

if content-type is "application/json" then 
    use apache web server 
else if content-type is "application/zend" then 
    use apache web server 
else 
    use node server 

Здесь тип контента отправляется в заголовках запроса. Контент-тип «application/zend» - это настраиваемый тип контента, который говорит, что для этого типа конкретного запроса мы не хотим использовать сервер узлов (мне это нужно по некоторым причинам).

Я попытался изменить HTTPd-vhosts.conf с

ProxyPreserveHost on 
ProxyPass/http://localhost:3000/ 
ProxyPassReverse/http://localhost:3000/ 

Но это, конечно, не достаточно, чтобы не все должно быть обработано сервером узла (прослушивает порт 3000). Поэтому необходимо добавить некоторые правила. Но я не уверен, где и как. Я также попытался изменить файл .htaccess, но не знаю, как это сделать.

Любая помощь будет замечательной! Благодаря!

+0

Что такое версия Apache –

+0

Привет! Версия Apache/2.4.18 –

ответ

1

Это должно работать (в .conf файле):

RewriteEngine on 
RewriteCond %{HTTP:Content-type} !=application/json 
RewriteCond %{HTTP:Content-type} !=application/zend 
RewriteRule^http://%{HTTP_HOST}:3000%{REQUEST_URI} [P] 

Имейте в виду, что это может нести потери производительности, и если большинство ваших запросов заканчиваются на узле, возможно, следует искать лучшее решение.

+0

Спасибо большое! За работой. Мне просто пришлось изменить последнюю строку: RewriteRule^http: //% {HTTP_HOST}: 3000% {REQUEST_URI} [P] (без косой черты до% {REQUEST_URI}). Я принимаю во внимание ваш комментарий о выступлениях. –

+0

Действительно,% {REQUEST_URI} уже содержит ведущую косую черту –

 Смежные вопросы

  • Нет связанных вопросов^_^