如何使用端口 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?的主要内容,如果未能解决你的问题,请参考以下文章
Apache + Node.js + mod_proxy。如何将一个域路由到:3000,将另一个域路由到:80