在Node.js应用程序中,我正在侦听localhost上的两个端口,如下所示:
const express = require('express');
app = express();
function startServer(port, hostname, app) {
app.get('/', (req, res) => {
res.send(`Welcome on server ${hostname} on port ${port}`);
});
app.listen(port, hostname);
console.log(`listening ${hostname} on port ${port}`);
};
function startServerRedirect(port, hostname, app) {
app.get('/', (req, res) => {
res.send(`running server on ${hostname} on port ${port}`);
res.redirect('localhost:4000');
});
app.listen(port, hostname);
console.log(`listening ${hostname} on port ${port}`);
};
var hostname = '127.0.0.1';
startServerRedirect(3000, hostname, app);
startServer(4000, hostname, app);
我在默认的80端口上运行第一台服务器时遇到问题,但这没关系。我希望能够在另一个服务器端口上发送用户并显示他/她的其他内容。对于我来说,这样做比app.route
或其他任何方式都重要。
答案 0 :(得分:0)
尝试
const port = process.env.PORT || 80 ;
答案 1 :(得分:0)
为使此设置正常工作,您需要更改几件事。
首先,您需要两个单独的快速应用,一个用于处理重定向,另一个用于接收重定向。即2个不同的端口。
const app1 = express()
const app2 = express()
然后,当然最后,您要将它们传递给您的辅助函数:
startServerRedirect(3000, hostname, app1);
startServer(4000, hostname, app2);
此外,在呼叫redirect
时,请确保在本例中使用带有“ http://”的完整网址,http://localhost:4000
最后,您不想在res.send
之前致电res.redirect
。原因是res.send
开始响应,但是res.redirect
设置了HTTP标头。您设置的所有HTTP标头都需要首先完成。因此,由于这里只是参考性信息,如果您想检查应用程序的工作方式,可以使用console.log
来代替:
app.get('/', (req, res) => {
console.log(`running server redirect on ${hostname} on port ${port}`);
res.redirect('http://localhost:4000');
});
这在startServerRedirect
就端口80而言,我认为您需要root访问权限才能在此处运行,但这是另一个问题...(nginx代理?)