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

How to get server URL when running on Elastic Beanstalk?

我使用 restify 创建一个部署到 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);
});

在本地运行时,我看到:

My API listening at http://0.0.0.0:1704

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

My API listening at http://0.0.0.0:8081

这是为什么?

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

我怎样才能得到真正的 URL(类似于 http://my-api.elasticbeanstalk.com)?

elastic beanstalk 节点应用程序在内部配置为 运行 on 8081。您可以在 node.conf:

中看到它
upstream nodejs {
    server 127.0.0.1:8081;
    keepalive 256;
}

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