[英]How to switch between address port in Node.js
在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
方式進行操作非常重要。
嘗試這個
const port = process.env.PORT || 80 ;
為了使該設置生效,您需要更改幾件事。
首先,您需要兩個單獨的快速應用程序,一個用於處理重定向,另一個用於接收重定向。 即2個不同的端口。
const app1 = express()
const app2 = express()
當然,最后,您可以將它們傳遞給您的輔助函數:
startServerRedirect(3000, hostname, app1);
startServer(4000, hostname, app2);
另外,在您的redirect
調用中,請確保在本例中使用帶有“ http://”的完整網址,即http://localhost:4000
最后,您不想在res.redirect
之前調用res.send
。 原因是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代理?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.