如何为同一 IP 地址上的多个不同域设置 Amazon Route53?

如何为同一 IP 地址上的多个不同域设置 Amazon Route53?

我有两个不同的域名,上面有完全不同的网站。我的 nginx 配置如下:

server {
    listen 80;

    server_name domainnameone.com;

    location / {
        proxy_pass http://localhost:3000;
    }
}

server {
    listen 80;

    server_name domainnametwo.com;

    location / {
        proxy_pass http://localhost:9000;
    }
}

第一个网站很好地解析了 IP 地址。对于第二个域名,如果我转到 ipaddress:9000,我会得到应该与网站二相对应的文件。我试图设置 route53 以在我转到www.domainnametwo.com,目前它正在显示第一个网站。我为第二个网站创建了一个新的托管区域,并将域名注册商指向托管区域 2 中的值。我只能在指定端口时显示第二个网站www.domainnametwo.com:9000。我必须说明一下,我在第一个网站上使用了 cloudfront,但我认为这不会造成干扰。

这是 nginx 还是 route53 的问题?

答案1

这很可能是 nginx 问题,您在更改配置后重新启动了 nginx 吗?

只是为了确保您使用的 DNS 记录与第一个站点使用的相同,后者是CNAME指向 cloudfront 的记录。

更新您的 nginx 服务器块以包含名称(裸域 + 您尝试使用您共享的示例进行访问的 www:

 server {
    listen 80;

    server_name domainnameone.com www.domainnameone.com;

    location / {
        proxy_pass http://localhost:3000;
    }
}

server {
    listen 80;

    server_name domainnametwo.com www.domainnametwo.com;

    location / {
        proxy_pass http://localhost:9000;
    }
}

答案2

这不是 Route53 的问题。只要您的域名请求映射到正确的 IP,Route53 就完成了它的工作。您甚至不需要不同的端口,服务器名称指示 (SNI)让您在同一个 IP 上为 http 或 https 拥有任意数量的 IP。

我怀疑您的问题出在您的 Nginx 或下游配置上。您上面粘贴的配置对我来说看起来是正确的,但我已经很久没用 Nginx 做过什么了。

答案3

您需要server在 nginx 中创建一个块,或者使用现有的块,其中包含与server_name您尝试使用的主机名匹配的块。您两次使用了您发布的 nginx 配置中未显示的主机名,因此您需要添加它们。

相关内容