在Elastic Beanstalk上运行时如何获取服务器URL?

我使用restify来创build部署到Elastic Beanstalk的节点API。

var server = restify.createServer({ name: 'My API' }); server.listen(process.env.PORT || 1704, function() { console.log('%s listening at %s', server.name, server.url); }); 

在本地运行时,我看到:

我的API在http://0.0.0.0:1704上监听

但是,在Elastic Beanstalk上运行时,日志显示:

我的API在http://0.0.0.0:8081上监听

这是为什么?

为什么server.url不是http://my-api.elasticbeanstalk.com

我怎么能得到真正的url(像http://my-api.elasticbeanstalk.com )?

弹性beanstalk节点应用程序被configuration为在内部运行8081。 你可以在node.conf看到它:

 upstream nodejs { server 127.0.0.1:8081; keepalive 256; } 

现在8081,只是内部端口。 如果你检查这个conf文件,你会看到外部端口实际上是8080,你ELB将指向端口80.我希望它不是太混乱:)
至于您的envurl,您可以从桌面发出eb status命令来查看CNAME。 它也写在EB Web控制台中。