Nginx中的默认EC2实例上的通配符子域

时间:2016-02-19 16:22:16

标签: amazon-web-services nginx amazon-ec2 wildcard-subdomain angular-fullstack

我正在使用未注册域名的默认EC2实例。我正在尝试使用子域在MEAN堆栈应用程序中测试一些多租户功能。

基本上我可以使用默认的AWS公共DNS ex。

通过浏览器访问该站点
http://ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com

这一切都很好,很好用。

问题是我想启用访问该域的子域的功能。例如,我希望能够点击:

http://client1.ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com
http://client2.ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com
etc.

我无法弄清楚如何使用nginx来做到这一点。这是我当前的nginx默认文件:

server {
        listen 80;

        server_name *.ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com;

        location / {
                proxy_pass http://127.0.0.1:8080/;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }
}

但是,当我导航到任何子域时,我收到错误消息,说网页不可用。

如果我在没有子域的情况下访问它,页面加载就好了。

关于如何让它发挥作用的任何想法?

感谢任何帮助!

编辑:你会注意到我已经创建了一个代理传递,因为我的节点服务器在端口8080上永远运行。

2 个答案:

答案 0 :(得分:1)

您无法使用默认的amazonaws主机名执行此操作,但还有另一种方法。

请参阅http://xip.io

any.subdomain.you-like.x.x.x.x.xip.io将自动解析为IP地址x.x.x.x,因此,如果您在主机名中替换EC2实例的IP地址,则可以获得所需内容。

为清楚起见:我与此服务无关。

答案 1 :(得分:0)

据我所知,亚马逊没有为他们的EC2域创建通配符记录,所以*。地址甚至无法解决(您可以轻松测试)。您需要注册一个域并将其作为CID通配给您的EC2实例。