我目前正在本地开发节点服务器,为了访问它,我让服务器在8080上侦听,然后在浏览器中转到localhost:8080。但是,当我将这个项目放在互联网上时,端口将如何工作?
答案 0 :(得分:1)
一旦你“把它放到互联网上”它是如何工作的将是完全一样的。浏览器仍然向端口发出请求(很可能是互联网上的80或443),但它可能会通过互联网而不是localhost
进入网络服务器。
如果您想了解如何将节点项目部署到服务器,请查看this guide。基本上你需要设置一个代理来坐在节点前面来处理所有服务器的东西,比如请求和ssl证书。
答案 1 :(得分:0)
我假设你的意思是为你的node.js程序提供服务并将你的localhost端口代理到互联网由将这个项目放在互联网上。简短的回答是,您永远不会在Internet上的某个端口上托管您的API,而是将您的本地端口暴露给Internet端口。
我相信你已经知道如何稳定地为node.js程序提供服务。如果没有,我真的推荐pm2。
如果您希望将API暴露给Internet,首先必须获取本地网络的IP,以便其他人可以通过此IP访问您的网络。您还可以将其与域相关联。然后使用IPfire等软件来管理端口映射。例如,您可以将yourIP:8080
映射到IP ofLocalhostAtLocalNetwork:8080
。然后,人们可以通过yourIP:8080
访问您的API。或者您只需将yourIP:80
映射到IPofLocalhostAtLocalNetwork:8080
,以便人们可以通过您的IP直接访问您的API。
服务器和代理服务的另一个非常流行的工具是nginx。使用Nginx,您可以轻松地为某些服务提供服务,并将任何端口代理到任何服务。
答案 2 :(得分:0)
您需要访问全局变量“ process.env ”,以便在从服务器运行代码时动态确定端口号。 The process.env property returns an object containing the user environment.
您可以执行以下操作来动态地适应本地和服务器环境:
//set port and ip
app.set("port", process.env.PORT || 8080);
app.set("ip", process.env.IP || "0.0.0.0");
app.listen(app.get("port"), app.get("ip"), function (err) {
if (err) {
console.error(err);
return;
} else {
console.info("cicak is running on port " + app.get("port") + ".");
}
});