Прокси-сервер Apache для узла.js и Wordpress на одном "домене" , но разными путями


Вот в чем дело. У меня есть сайт Wordpress, работающий на моем основном домене say http://www.example.com.

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

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

Я хочу запустить узел.JS приложение на определенном пути от тот же домен. Например, если я нажму, http://www.example.com/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 2

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/