网站不支持Safari 6版本:是Next.js还是DNS问题?
问题根源与解答
这个问题既不是Next.js配置导致的,也和DNS设置无关,核心原因是TLS协议及加密套件的兼容性问题。
具体分析:
- 排除Next.js的可能性:你的Next.js配置仅启用了MDX支持,没有涉及任何TLS或浏览器兼容性的特殊配置;Next.js 14.2.5的代码编译逻辑也不会直接导致TLS握手失败——TLS层的连接建立发生在Next.js代码执行之前,所以和框架本身无关。
- 排除DNS的可能性:用户反馈“网站已宕机”但实际网站正常,且检测工具能识别到域名对应的主机,说明DNS解析是正常的,问题出在后续的安全连接建立环节。
- 真正原因:Safari 6是2012年发布的老旧浏览器,仅支持TLS 1.0和TLS 1.1协议,且兼容的加密套件非常有限。而Vercel等现代托管平台默认会禁用这些存在严重安全漏洞的旧版TLS协议,导致Safari 6无法与服务器完成TLS握手,最终表现为“无法访问”。
解决方案:
- 不推荐方案:如果必须兼容Safari 6这类古董浏览器,可以在Vercel项目的「Settings → Security → TLS Configuration」中手动启用TLS 1.0和TLS 1.1,但这会大幅降低网站的安全性,存在被攻击的风险。
- 推荐方案:建议用户升级到现代浏览器,这是兼顾安全性和兼容性的最优选择。
你提供的配置信息:
next.config.mjs
import createMDX from "@next/mdx"; /** @type {import('next').NextConfig} */ const nextConfig = { // Configure `pageExtensions` to include markdown and MDX files pageExtensions: ["js", "jsx", "md", "mdx", "ts", "tsx"] // Optionally, add any other Next.js config below }; const withMDX = createMDX({ // Add markdown plugins here, as desired }); // Merge MDX config with Next.js config export default withMDX(nextConfig);
依赖版本
"next": "14.2.5", "react": "^18",
托管平台:vercel
内容的提问来源于stack exchange,提问作者zain ul din
相关产品推荐
相关产品推荐

