Firebase托管:需要为Cloudflare DNS进行设置

63

我正在尝试为我的Firebase应用设置自定义域名。

Firebase托管的网址:https://inventory-app-726af.firebaseapp.com/

自定义域名:inv.agsft.com

我已按照设置自定义域名的全部说明进行操作,但在验证步骤后,当我点击完成按钮时,状态始终是“需要设置”。

我通过cloudflare(https://www.cloudflare.com/)管理DNS,并且正在遵循快速设置选项。

有什么指针可以解决它吗?


2
当我运行 dig -t txt +noall +answer inv.agsft.com 时,没有显示任何 TXT 记录。由于这些记录是验证您对域名的所有权所必需的,因此 Firebase Hosting 将不会在第一步之后继续设置。除此之外:这里没有足够的信息供 Stack Overflow 上的任何人提供帮助。如果您想要个性化的帮助,请联系 Firebase 支持团队 - Frank van Puffelen
1
谢谢。我已经更正了TXT记录。 dig -t txt +noall +answer inv.agsft.com inv.agsft.com. 299 IN TXT "google-site-verification=8uObmfAMZrc29piBvbJnRmyKNhONB3Iom6-qMOT9gHk" - Pari
我正在尝试高级设置选项,需要等待24小时,然后我会更新详细信息。 - Pari
1
看起来还有其他问题,我已经联系了 Firebase 支持但尚未得出解决方案。在得到解决方案后,我会更新帖子并告知答案。 - Pari
1
Pari,有什么更新吗? - damingzi
12个回答

59

我也遇到了同样的问题,通过将云flare上两个A记录的DNS状态从DNS和HTTP代理(CDN)切换到只有DNS的方式解决了该问题。

图片描述

马上就开始工作了。


如果这种情况发生在我身上,你是如何使用Cloudflare的当前网站来解决的? - Murray Rowan
1
@MurraySmith,您只需单击每个DNS记录旁边最右侧的云图标。因此,请确保您的Firebase URL的两个A记录已切换,即显示灰色云。 - brennen
2
我刚试过了,这个方法仍然有效!你只需要为两个 firebase1._domainkeyfirebase2._domainkey 的 CNAME 条目执行此操作。这些条目用于验证您的域名所有权。当然,不要为您的 www A 记录或类似记录执行此操作。 - Maarten Docter
你只需要关闭Cloudflare来证明你拥有该域名!一旦获得批准,你可以重新开启它!如果你打开Cloudflare,Firebase将无法看到你添加的记录,因为这就是Cloudflare的整个目的,即隐藏你的目标地址。 - eddyP23
2
而且可以说,除了Firebase托管之外,您是否需要在其上使用Cloudflare还有待商榷。 - eddyP23
显示剩余4条评论

27
正确的解决方案是使用完整的SSL来为您的域名/子域名提供服务,而不是禁用Cloudflare。您可以选择为所有域条目使用完整的SSL,或者为特定的子域设置页面规则,在您的情况下,使用"inv.agsft.com/*"。
来源:https://community.cloudflare.com/t/flexible-ssl-redirect-loop-with-google-firebase/2063/3,该网站指向https://support.cloudflare.com/hc/en-us/articles/115000219871-Why-does-Flexible-SSL-cause-a-redirect-loop- 我之前也遇到同样的问题,这个方法解决了重定向问题。然而,Firebase仍然会报告域名为“需要设置”,对此我没有解决方案,但它不会影响托管的功能。

1
只需将选项从“Full (Strict)”更改为“Full”,如果Firebase已经提供SSL证书,则更合理。 - Kardon63

20

如果您使用的是Namecheap,这个配置对我有效。

Namecheap配置


3
重要的更改在于使用“@”代替“mysite.com”。 - Jonathan
使用@对我不起作用,因为Cloudflare会自动将其更改为mysyte.com。 - Dpedrinha
1
是的,这也是GoDaddy的解决方案! - Kes Walker

9
为了避免在使用Firebase托管和Cloudflare时出现任何SSL问题,您需要检查以下几点:
1. 除非您不想使用Cloudflare的SSL证书并且只想使用Firebase的SSL证书,否则无需将Cloudflare上两个A记录的DNS状态从DNS和HTTP代理(CDN)切换到仅DNS(请注意,如果您决定仅使用Cloudflare DNS,则会失去Cloudflare为您的站点提供的保护)

enter image description here

如果您“保持云端橙色”,则不会对Firebase托管造成任何问题。
将Firebase IP添加到Cloudflare中,按照Firebase托管提供的说明进行操作,并从您正在设置的域名/子域中删除任何其他A记录。
为确保具有端到端加密(使用Firebase SSL和Cloudflare SSL),请确保您的Cloudflare加密选项设置为“全”。

enter image description here

  1. 如果您想让根域名接收所有流量,请使用类似的页面规则:

enter image description here

  1. 在您的Firebase托管设置中,执行相同操作: 输入图像描述

p.s: 请注意,“需要设置”消息仍然存在,但应用程序运行正常。

p.s2:关于Cloudflare和Firebase的大多数问题是Firebase SSL可能需要几个小时才能开始工作,并且您仍会看到类似“您的连接不是私密的”等消息。这并不是因为Cloudflare正在干扰我们的代理,而是因为Firebase SSL尚未完全传播。

我希望它能帮助其他人 :)


4

在我的情况下,我做了和 Brennen 一样的事情:

  • 将两个 A 记录的云帆 DNS 状态从 DNS 和 HTTP 代理(CDN)切换到仅 DNS。

但只有当我执行以下操作时才开始工作:

  • 从 Firebase 中删除该域名。(点击 : 点选删除域名)
  • 刷新 Firebase 网站
  • 在快速设置中再次添加。由于我已经在 Cloudflare 中添加了 A 记录,因此我没有再次添加。

之后,状态会自动添加为已连接。

请记住:在测试之前,请清除您的浏览器缓存。


3
当我运行命令dig -t txt +noall +answer inv.agsft.com时,没有显示任何TXT记录。由于这些记录是验证您拥有该域名所必需的,因此Firebase Hosting不会在第一步之后继续设置。
更新:由于下一步需要将A记录映射到Firebase Hosting的IP地址,因此我也运行了相关的dig命令:
$ dig -t a +noall +answer inv.agsft.com
inv.agsft.com.      299 IN  A   104.18.56.240
inv.agsft.com.      299 IN  A   104.18.57.240

这些不是我所期望的Firebase Hosting地址,因此看起来可能是您没有正确输入A记录,也可能是它们还没有传播。


我刚刚运行了dig命令,并得到了以下结果。 dig -t txt +noall +answer inv.agsft.com inv.agsft.com. 299 IN TXT "google-site-verification=8uObmfAMZrc29piBvbJnRmyKNhONB3Iom6-qMOT9gHk" - Pari
很好。但是你报告的问题出现的原因是缺少TXT记录。解决了这个问题,Firebase Hosting应该能够验证您拥有该域名(可能需要最多24小时),然后过渡到下一个阶段(添加A记录,如果我没记错的话)。 - Frank van Puffelen
我添加了一些我现在看到的信息。但是既然您还提交了一个支持案例,我建议您在那里更新,因为他们可以直接在支持系统中查看状态。 - Frank van Puffelen

3
当我像下面这样更改设置后,重定向循环问题得到了解决: 重定向循环已修复:

enter image description here


3

对于 GoDaddy 用户,添加以下内容解决问题:

类型:A

名称:@

数值:你的 IP 地址1

类型:A

名称:@

数值:你的 IP 地址2


我已经这样做了,但仍然显示“需要设置”。有任何想法为什么? - Sheikh Wahab Mahmood
已解决:我必须从GoDaddy DNS管理中删除旧的“ A ”记录。 - Sheikh Wahab Mahmood
@SheikhWahabMahmood Firebase Hosting可以添加2个域名,但不能添加子域名。例如:example1.com和example2.com及其重定向。 - LOG_TAG

2

2020年6月

我想分享一下对我有效的方法。这是 Brennen 和 Lisbel 的答案的结合。

步骤1:关闭DNS状态以获得灰色云(如早期答案所示)

步骤2:从 Firebase 中删除该域名

步骤3:使用快速设置将其重新添加

完成这些步骤后,应该已经连接成功了!


你在这样做的时候删除了你的网站的域名和重定向域名(http->https)吗?我基本上有四个域名。 - NFL
另外,当重新添加域名时,您是否在Cloudflare上切换了橙色云代理设置,还是让它保持灰色? - NFL

0

我曾经遇到过同样的问题,以下是我解决的方法:

1) 在“主机”部分,在需要设置的域名旁边,点击“查看”按钮。

2) 将“设置模式”从快速设置更改为高级设置,并按照3个步骤进行操作

  • 2a) 打开您的域名提供商的设置(我使用的是Google Domains),并添加它所提供的TXT记录。
  • 2b) 等待大约4-12小时进行验证
  • 2c) 将提供的A记录添加到您的域名提供商的设置中

这不是一个快速的过程,但在完成第2c步后,它应该可以在大约5分钟内正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接