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



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

基本上,我可以使用默认的AWS公有DNS通过浏览器访问该站点。

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 上永久运行。

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

请参阅 http://xip.io。

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

为清楚起见:我不隶属于这项服务。

据我所知,亚马逊不会为其EC2域创建通配符记录,因此*.地址甚至不会解析(您可以轻松地对此进行测试)。相反,您需要注册一个域,并将其通配符作为 CNAME 添加到您的 EC2 实例。

最新更新