heroku路由如何请求正确的端口?

时间:2015-01-26 01:06:54

标签: node.js heroku

在阅读了几篇Heroku NodeJS教程后,我了解到Heroku通过" process.env.PORT"为您的应用程序分配了一个随机端口。环境变量,以及让你的应用程序在本地和heroku上工作的正确方法是将端口设置为等于

process.env.PORT || 8000

,当您在localhost上运行时,可以使用您希望应用程序运行的任何端口替换8000。

以下是我在应用中的外观("服务器"是http服务器,当前正在提供静态HTML文件):

server.listen(process.env.PORT || 8000)

当我在heroku上运行应用程序并检查日志时,我会看到process.env.PORT被分配了一个端口号...这个先前的部署,它是29074。

当我在本地运行应用时,我通过网址http://localhost:8000进行连接。如果我没有包含端口号,则页面无法加载(无法找到页面)。

为什么在连接到heroku上的页面时,我不必在URL中指定端口29074?我可以访问网址https://limitless-brook-9339.herokuapp.com/而无需指定端口号,并且可以正常加载。事实上,如果我尝试将URL中的端口显式设置为:29074,则表示"此网页不可用"。

1 个答案:

答案 0 :(得分:3)

请记住,Heroku可能正在幕后做一些路由。如果有请求,则不一定会命中您的应用程序(例如,运行Express)。它最有可能像nginx这样,可以根据主机名做自己的内部路由。

语句server.listen(process.env.PORT || 8000)指定端口 - 它是process.env.PORT的值(通过在命令行上设置PORT = 80(或PORT = 443)指定)或使用端口8000作为默认。

相关问题