情况就是这样。
我在我的主域名上运行了一个Wordpress网站,说http://www.example.com
。
.htaccess
,我正在使用Wordpress固定链接生成漂亮的网址。
现在我在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
Express路由器非常基本,使用以下应用配置:
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
模板。
答案 0 :(得分: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/