我使用的是未注册域名的默认 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 实例。