【问题标题】:Subdomain mapping through Proxy or DNS?通过代理或 DNS 进行子域映射?
【发布时间】:2018-06-21 12:04:45
【问题描述】:

我有几个站点托管在不同的域中,例如 foo.combar.combaz.com 等...我的用例是通过 foo.mydomain.combar.mydomain.com 等唯一域的子域提供这些站点, baz.mydomain.com等等...

我知道 CNAME 记录可以轻松地将 foo.mydomain.com 映射到 foo.com,但我的注册商只允许使用他们的 DNS 最多 100 个 DNS 记录...所以我尝试了其他几个时髦的解决方案并将它们减少到两个选项到目前为止:

  • 创建一个将所有子域映射到唯一 IP 的 A 记录,例如:*.mydomain.com A 12.34.56.78。然后在这个 IP 上存在一个像 nginx 这样的反向代理服务器,它将处理如下虚拟主机:

    server {
      listen   80;
      server_name http://foo.mydomain.com;
      location / {
        proxy_pass http://foo.com
      }
    } 
    

  • 创建一个DNS服务器,把相关的域名服务器放在mydomain.com前面,这样我基本上就可以创建100多个子域了。

我开始考虑性能、成本和稳定性。 DNS 正是我在功能上所需要的(我不需要速率限制、负载平衡或其他:只是纯粹的地址映射),但我被告知 DNS 可能随着 CNAME 记录列表的扩展而难以管理/速度缓慢(比如在 200 条 CNAME 记录之后,事情可能会变慢),是真的吗?

nginx/反向代理路由似乎更健壮,但大多数时候,它会以更高的价格出现,而供应商倾向于对带宽使用收费,如果我错了,请纠正我,但我了解带宽进出 nginx , 正确的 ?所以我基本上会支付两次带宽:一次将所有站点从主机提供商中取出,然后再将其从 Nginx 中取出(我正确吗?)

归根结底,我只想实现与 wordpress、tumblr、blogger 等完全相同的功能......似乎有无限数量的子域来支持每个用户的网站:user1.tumblr.com , user100000.wordpress.com 等...

您会推荐什么来获得相同的功能?代理或DNS? 最终,我想以便宜的价格获得这个,因为我无意为这个项目创造收入:)

【问题讨论】:

  • 你已经有了清晰的图片:);只需更改 DNS 服务提供商。
  • @DusanBajic 我肯定会,但我有点担心将 100.000 个或更多子域作为单独的 DNS CNAME 记录进行管理的性能:你有这方面的经验吗?您认为在 100.000 个 CNAME 规则中“找到正确的”CNAME 规则的延迟不会变得至关重要吗?
  • 什么是可接受的延迟(一旦您决定,我们可以进行实验:)?
  • 我联系了一些 DNS 提供商,例如 clouDNS.net,并说使用 100.000 CNAME 或仅 1 没有区别......所以我可能会走这条路。

标签: nginx dns subdomain reverse-proxy


【解决方案1】:

反向代理服务器

创建大量记录可能效果不佳,因此我推荐您使用通配符 dns 方式。 您可以创建一个通配符记录*.domain.com,它将指向您的网络服务器。

带宽传输确实会翻倍。 反向代理服务器(在这种情况下为 NGINX)将连接到源服务器并下载响应,然后该服务器将相同的响应传输到客户端。

DNS

您可以自己托管 DNS,但这是以维护 DNS 为代价的。您还可以使用托管 DNS 提供商(例如:AWS ROUTE53)并为 yourdomain.com 创建指向源服务器的 CNAME 记录。

我的偏好?

我会采用反向代理服务器的方式。

【讨论】:

  • 嘿!感谢您的回答。不知道我理解的对不对,你说:“创建很多记录可能没有效果,所以我推荐你用通配符dns的方式。”然后“我会采用反向代理服务器的方式。”。那么...对于 100.000 子域映射,您有什么建议?代理还是 DNS?
  • 如果您可以为每个子域创建 dns 记录,那么您可以使用“DNS”方式。我在最近的一个项目中选择了 Proxy 方式,因为维护大量的 dns 记录对我们来说并不有效。因此,这取决于您的用例,如果您可以轻松创建/维护 dns 记录,则可以使用 DNS。
【解决方案2】:

在您的用例中,我会选择 DNS。

反向代理会有三个缺点:

  • 所有子域的流量都将通过代理,因此您可能需要多个子域,具体取决于您的流量
  • 如果代理和网络服务器由不同的提供商托管,延迟会显着增加
  • 如果代理关闭,所有连接的子域也会关闭,除非您有多个负载平衡代理

DNS 没有任何这些缺点。反向代理当然还有其他优势,但我认为它与您的用例无关。

【讨论】:

    猜你喜欢
    • 2020-07-23
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 2012-10-22
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    相关资源
    最近更新 更多