我的 Web 服务器(Ubuntu、Nginx)同时具有主机分配的 IPv4 和 IPv6 地址。对于我的网站,我应该仅将其绑定到 IPv6 地址吗?这是标准推荐的方式吗?或者,我应该同时使用 IPv4 和 IPv6 地址吗?
答案1
同时使用 IPv4 和 IPv6
您应该同时使用 IPv4 和 IPv6 地址。
目前,互联网上几乎每个人都拥有 IPv4 地址,或位于某种 NAT 之后,并且可以访问 IPv4 资源。
然而,在撰写本文时仅有约0.7% 2.3% 3.8% 6.5% 9% 12% 19% 22% 26% 32% 37% 43% 的互联网支持 IPv6但随着 IPv6 在全球范围内开始推广,这一数字正在稳步增长。
在极少数地方,互联网服务提供商提供主要IPv6 或仅有的住宅用户使用 IPv6,并使用大规模 NAT、NAT64 或其他类似解决方案实现 IPv4 连接。随着 IPv4 地址空间最终耗尽,这一数字预计还会增长。这些用户通常比 IPv6 具有更好的性能。
虽然 ISP 已经部署了大规模 NAT 来解决 IPv4 耗尽问题,但由于大规模 NAT 网关固有的连接限制,坚持使用这种方案的用户将遭受所有 Internet 连接可靠性降低的困扰。例如,一个网页可能只能加载部分资源,但不是全部,在图像应该出现的位置留下损坏的图标、缺少样式和脚本等。这类似于家用路由器的连接限制耗尽,但会间歇性地、看似随机地影响 ISP 的所有用户。如果您希望您的网站对这些用户可靠,则必须通过 IPv6 提供服务(并且 ISP 必须部署 IPv6)。
由于 IPv6 是互联网的发展方向,因此现在为您的网站启用 IPv6 将使您处于领先地位,并允许您在问题变得严重之前尽早解决它们。
配置 nginx
默认情况下,在 Linux 和 nginx 中,你可以通过以下方式同时绑定到 IPv4 和 IPv6:改变你的listen
指令到:
listen [::]:80;
listen 80;
或者,对于 SSL 站点:
listen [::]:443 ssl;
listen 443 ssl;
答案2
绑定两者!
我们有一个 IIS 网站,其代码使用客户端使用的 DNS 名称对其自身进行内部引用。此过程总是失败。
另一个症状是,在服务器上本地运行的浏览器无法通过服务器名称找到网站,只能通过 IPv4 地址找到网站。也就是说,http://192.168.55.139
可以工作,但http://myhost
会失败。ping myhost
默认情况下,使用将返回 IPv6 地址(ping myhost -4
将返回 IPv4 地址)。
解决方法是打开 IIS 并更改网站的绑定以绑定到 IPv6 地址以及 IPv4 地址。