2015-12-11 3 views
1

Вот так. У меня есть веб-сайт Wordpress, работающий на моем основном домене, http://www.example.com.Apache Proxy для Node.js и Wordpress на одном и том же «домене», но разные пути

.htaccess включен на сервере, и я использую постоянные ссылки Wordpress для генерации довольно URL-адресов.

Теперь у меня есть другое приложение в Node.js (Express), которое я развернул на том же сервере и работает на номере порта 3000. Поэтому, если я положил http://www.example.com:3000, он запускает мое приложение Expressjs. и он работает безупречно.

Что я хочу - запустить приложение Node.js по определенному пути из того же домена. Например, если я ударил, http://www.example.com/node, он должен принять пользователя в мое приложение Node.js, которое довольно неплохо, если я использую Apache mod_proxy. Но это работает только для маршрута моего маршрутизатора Expressjs /. Но у меня также есть несколько других маршрутов, например. /subscribe, /confirm, но никто из них не работает. Ниже приведена моя конфигурация Apache, которую я попытался выполнить, указав несколько директив ProxyPass, но это не сработает.

ProxyPass /node http://127.0.0.1:3000/ 
ProxyPassReverse /node http://127.0.0.1:3000/ 
ProxyPass /node/subscribe http://127.0.0.1:3000/subscribe 
ProxyPassReverse /node/subscribe http://127.0.0.1:3000/subscribe 

Экспресс маршрутизатор довольно простой и использует следующие конфигурации приложения:

var router = express.Router(); 
app.use("/",router); 

router.get("/",function(req,res){ 
    res.sendFile(templatepath + "index.html"); 
}); 

router.get("/subscribe",function(req,res){ 
    res.sendFile(templatepath + "subscribe.html"); 
}); 

router.get("*",function(req,res){ 
    res.sendFile(templatepath + "404.html"); 
}); 

При попытке загрузить http://www.example.com/node/subscribe он просто загружает * маршрут и отображает 404.html шаблон.

ответ

1

Наконец получили его работы путем изменения файла конфигурации Apache следующим образом:

ProxyPreserveHost On 
RewriteEngine On 
ProxyPass ^/node/(.*) http://127.0.0.1:3000/$1 [P,L] 
ProxyPassReverse /node/ http://127.0.0.1:3000/