我的网络上运行着一个内部托管的 DNS 解析器Core DNS
。除了通过 VPN 连接时无法加载我的顶级域之外,一切都很好。原因是区域文件将我的域名映射到 NGINX 的内部 IP,而 NGINX 有大量我的域的子域条目。
- thing1.example.com <- 有效
- thing2.example.com <- 有效
- example.com <- 不起作用。
具体来说,我想从我的网络外部加载此网站。
我以为我会在 Zone 文件中有一个 CNAME 条目,用于路由流量,甚至通过 VPN 路由到由 Cloudflare 外部托管的网站,但显然我现在超出了我的知识范围。我该如何实现这一点,这种东西叫什么?
这是我的区域文件
$ORIGIN example.com.
@ 3600 IN SOA sns.dns.icann.org. noc.dns.icann.org. (
2017042746 ; serial
7200 ; refresh (2 hours)
3600 ; retry (1 hour)
1209600 ; expire (2 weeks)
3600 ; minimum (1 hour)
)
* 3600 in A 172.16.0.2 # this is private static IP I assigned to NGINX on internal network
example.com. 3600 IN CNAME proxy.example.com.
A 记录很好。我刚刚添加了这个 CNAME,但它会循环回到 NGINX 并加载错误的站点。
proxy.example.com
是别名记录Cloudflare DNS 中指向 example.com 的记录。但通过 VPN 连接时不起作用。也许有一定网络知识的人可以向我解释一下。
答案1
您当前尝试遇到的问题:
- 你不能使用
CNAME
域名顶端的记录。 - 你的
proxy.example.com.
是的一部分* IN A 172.16.0.2
。
可行的方法:
- 添加内部复制的
proxy.example.com. A
。它必须与全局 DNS 层次结构上的相应记录完全一样配置,并且每次更新外部副本时都应单独更新。 - 添加
example.com. IN A 172.16.0.2
指向你的 Nginx。 - 配置 Nginx 以执行从
http(s)://example.com/
到 的HTTP 重定向http(s)://proxy.example.com/
。
最佳做法:
- 不要在外部和内部使用同一区域。
- 您可以委托外部域的子域供内部使用。
- 例如,
thing1.internal.example.com
- 例如,