如何使用端口 80 而不是 3000?

Posted

技术标签:

【中文标题】如何使用端口 80 而不是 3000?【英文标题】:How can I use port 80 instead of 3000? 【发布时间】:2021-04-09 16:01:10 【问题描述】:

我的应用使用 80 端口,但 heroku 不允许我的应用访问 80 端口。所以,我使用 3000 并运行它。

但是,现在我无法访问它,因为在 heroku 中无法访问端口 3000。我的应用如何获得对 heroku 的访问权限?

【问题讨论】:

这能回答你的问题吗? How to make the webpack dev server run on port 80 and on 0.0.0.0 to make it publicly accessible? 【参考方案1】:

首先,我认为这是对端口的误解。您的应用程序将在代理(又名负载均衡器)之后运行,因此您实际上不需要指定使用 80 端口(而且您不能)。 Heroku 提供环境变量 PORT,您必须使用该端口来启动您的应用程序。 Heroku 代理在 80 端口(和 443,支持 SSL)上运行,并将所有流量重定向到 PORT 端口。

您的 Node.js 应用未正确配置为绑定到 Heroku 通过 $PORT 环境变量提供的端口以外的端口。

例子:

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => 
    console.log(`Our app is running on port $ PORT `);
);

参考:Why is my Node.js app crashing with an R10 error?

【讨论】:

好吧,我创建了环境变量,但什么也没有 @RoboticObsession,你设置了PORT?这不是它的工作原理。 PORT 环境变量 将由 Heroku 自动为您设置。你只需要绑定它。【参考方案2】:

简单的答案是你不能。

Heroku 不允许您直接将侦听端口分配给您的网络应用程序。您的 Web 应用程序是自包含的,Heroku 将为它们分配一个动态端口。访问它的唯一方法是使用默认端口 (80)。

【讨论】:

那么如何在 heroku 和 node.js 中使用 80 端口? 你可以使用这样的环境变量来让你的应用在heroku打开的端口上运行。 port = process.env.PORT || 80 是的,但是 heroku 不允许我访问该端口 错误是太多的文字所以我会把重要的东西Error: listen EACCES: permission denied 0.0.0.0:80

以上是关于如何使用端口 80 而不是 3000?的主要内容,如果未能解决你的问题,请参考以下文章

XAMPP 服务器使用多个端口而不是端口 80

Apache + Node.js + mod_proxy。如何将一个域路由到:3000,将另一个域路由到:80

为啥 Tomcat 使用端口 8080 而不是 80?

为啥tomcat换成80端口就不能访问了?而其他端口可以

H3C 18-63-1 如何禁止访问一个外网IP的一个端口?

请问80端口被占用如何解决