【问题标题】:当主站点托管在 Wordpress 上时,将子域重定向到 S3 存储桶?
【发布时间】:2022-01-20 00:32:36
【问题描述】:

我们有一个托管在 Wordpress 上的主网站 (www.example.com)。我已经建立了一个在 AWS S3 (test.example.com.s3-website-ap-southeast-2.amazonaws.com/) 中托管的替代站点。主网站的 DNS 记录托管在 Route 53 上。

我希望可以从 test.example.com 访问替换站点,同时保持主站点运行。 (更新)我在 Route 53 中有以下 DNS 记录:

example.com A   Simple  -   
xx.xx.xx.146

example.com MX  Simple  -   
0 example-com.mail.protection.outlook.com

example.com NS  Simple  -   
ns-2031.awsdns-61.co.uk.
ns-251.awsdns-31.com.
ns-638.awsdns-15.net.
ns-1284.awsdns-32.org.

example.com SOA Simple  -   
ns-2031.awsdns-61.co.uk. awsdns-hostmaster.amazon.com. x xxxx xxx xxxxxxx xxxx

example.com TXT Simple  -   
"v=spf1 include:spf.protection.outlook.com -all"
"MS=msxxxxxx"
"google-site-verification=xxxx"

_sipfederationtls._tcp.example.com  SRV Simple  -   
xxx x xxxx sipfed.online.lync.com

_sip._tls.example.com   SRV Simple  -   
xxx x xxx sipdir.online.lync.com

api.example.com A   Simple  -   
xx.xx.xx.146

autodiscover.example.com    CNAME   Simple  -   
autodiscover.outlook.com.

lyncdiscover.example.com    CNAME   Simple  -   
webdir.online.lync.com

msoid.example.com   CNAME   Simple  -   
clientconfig.microsoftonline-p.net

sip.example.com CNAME   Simple  -   
sipdir.online.lync.com

test.example.com    CNAME   Simple  -   
test.example.com.s3-website-ap-southeast-2.amazonaws.com.

www.example.com A   Simple  -   
xx.xx.xx.146

但是,浏览 test.example.com 仍然会将我带到主站点,而不是替换站点。

我做错了什么?

【问题讨论】:

  • 您是说test.example.com 解析为与www.example.com 关联的IP 地址?鉴于您的 CNAME 配置,这听起来不太可能。如果您将test.example.com 解析为IP 地址,它与您的WordPress 服务器的IP 地址是否相同?
  • 是的,没错:当我浏览到 test.example.com 时,它解析为与 www.example.com 相同的 IP 地址。我已经添加了上面路由表的其余部分,以防有人可以帮助解决这个问题。

标签: amazon-web-services amazon-s3 dns subdomain amazon-route53


【解决方案1】:

尝试在 Route53 中使用 A alias 记录,而不是 CNAME

另外,请确保您:

  • 将您的存储桶准确地命名为您的 DNS 名称,例如如果您的 DNS 名称是 test.example.com,那么您的存储桶名称应为 test.example.com
  • 在您的存储桶上启用Static website hosting
  • 关于安全性,将Block public access 设置为Off
  • 应用以下存储桶策略:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::test.example.com",
                "arn:aws:s3:::test.example.com/*"
            ]
        }
    ]
}

如果按照上述说明进行操作,就不会有任何并发​​症。但是,如果您之前配置错误,则需要耐心等待,因为 DNS 记录需要一些时间(生存时间或 TTL)才能在全球范围内重新传播。您可以减少 Route53 中的 TTL 并减少等待。此外,您的浏览器和操作系统正在缓存 DNS 记录,因此最好刷新 DNS 设置,例如在您可以使用的 Mac 上:

$ sudo killall -HUP mDNSResponder

要调试 DNS 问题,请使用 dignslookup(它们的输出应指向 S3 的 IP 地址):

$ dig -t a test.example.com
$ nslookup test.example.com

我也喜欢 this 网络服务,它可以帮助您在全球范围内跟踪 DNS 传播。


我建议将您的静态 S3 网站放在 CloudFront 后面。您将受益于它为您的最终用户带来的低延迟和高传输率。此外,您的 S3 账单将显着减少(如果提供给大量用户)。

最后但同样重要的是,您将能够通过https 为您的静态网站提供服务。您当前的解决方案只能通过 http 工作。

【讨论】:

  • 我尝试用以下内容替换之前添加的内容,但仍解析为 www.example.com:test.example.com 简单 - s3-website-ap-southeast-2.amazonaws.com。
  • 你确定是alias记录(A型)吗?也许尝试使用不同的 PC/智能手机?清理浏览器缓存,刷新 PC 上的 DNS?
  • 也可以在这里查看我的答案stackoverflow.com/questions/70047062/…
  • 在 Mac 上,我会使用 sudo killall -HUP mDNSResponder 刷新 DNS
  • 查看更新的答案
猜你喜欢
  • 2017-05-22
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
  • 2021-01-10
  • 2017-06-25
  • 2016-07-07
  • 1970-01-01
  • 2023-01-20
相关资源
最近更新 更多