我有两个不同的域名,上面有完全不同的网站。我的 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 配置中未显示的主机名,因此您需要添加它们。