使用ProxyPass restFul api的Apache和Node.js无法正常运行

时间:2018-07-24 09:47:03

标签: javascript node.js apache express

我已经工作了几个小时!正如您在以下代码示例中看到的那样,我使用express js创建了一个node js restful api,我使用node-firebird插件连接到firebird数据库。它在localhost:3000上侦听,当我发出GET请求localhost:3000 / products时,它工作正常。但是我需要使用runnig apache(端口80),因此,我使用的是 ProxyPass (如下所示),因此我可以监听两个端口,例如: localhost / node >,并且似乎仅能在我的节点项目的server.js中完成的代码起作用。 但是,当我尝试获取对 localhost / node / products 的请求时,却得到了 404 Not Found (找不到)。使用node js和apache创建restFul APi真是太好了,请让我知道您的想法

这是我的server.js

const app = require('./app.js') 
const express = require("express")
var router = express.Router();
var Firebird = require('node-firebird')

app.listen(3000, ()=>console.log("listening port 3000"));

app.js

const express = require('express');
const app = express();
const productRoutes = require('./api/routes/products');

app.use('/products', productRoutes);
module.exports = app;

和我的products.js(我在其中创建了一个宁静的api)

const express = require("express");
const app = express();
const router = express.Router();
const mongoose = require("mongoose");
var Firebird = require('node-firebird');


var options = {};
console.log('here is porducts')
options.host =  process.env.IP;
// options.port = 3050;
options.database =process.env.LOCATION;
options.user = process.env.FDB_UN;
options.password = process.env.FDB_PW;
options.lowercase_keys = false; // set to true to lowercase keys
options.role = null;            // default
var msg;

router.get("/", (req, res, next) => {
Firebird.attach(options, function (err, db) {
    if (err)
        throw err;
  db.query('select GM_ID,GM_POSTNUMMER,GM_DEELGEMEENTE,GM_LAND_FK,LN_ACTIEF 
  from Gemeente left join land on (GM_LAND_FK=LN_ID)',
function(err, result) {
    msg= result
    console.log(JSON.parse(JSON.stringify(result)))
    res.status(200).json({
        message: result

    })
    db.detach()
    })
 })

为了使用两个端口,我在apache的 httpd.conf 文件中添加了这一行

 #added this for node js test
 ProxyPass /node http://localhost:3000/ 

谢谢 托纳修

0 个答案:

没有答案