You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Nginx将含特殊字符域名的HTTPS请求重定向至已获证域名?

解决Nginx中IDN域名HTTPS重定向的证书错误问题

问题根源

当用户访问https://flåtinfo.dk时,浏览器会自动将带特殊字符的IDN域名转换为Punycode格式(xn--fltinfo-0za.dk)发起请求。此时Nginx使用flaatinfo.dk的证书完成SSL握手,证书域名与请求域名不匹配,浏览器会优先抛出证书错误,之后才会执行重定向,导致用户体验极差。


方案一:为IDN域名申请匹配的SSL证书(推荐)

绝大多数主流证书服务商支持IDN域名,只需使用Punycode格式的域名申请即可:

  1. 将flåtinfo.dk转换为Punycode:xn--fltinfo-0za.dk,www.flåtinfo.dk对应www.xn--fltinfo-0za.dk
  2. 用该Punycode域名向服务商申请SSL证书
  3. 在Nginx中添加以下服务器块:
server {
    listen 443 ssl;
    server_name xn--fltinfo-0za.dk www.xn--fltinfo-0za.dk;
    # 配置IDN域名的证书路径
    ssl_certificate /path/to/xn--fltinfo-0za.crt;
    ssl_certificate_key /path/to/xn--fltinfo-0za.key;
    # 永久重定向到目标域名
    return 301 https://flaatinfo.dk$request_uri;
}

这种方式下,SSL握手阶段证书与域名完全匹配,浏览器不会报错,直接完成重定向,是最优解。


方案二:无对应证书时的临时重定向配置(体验较差)

如果暂时无法申请IDN域名的证书,可通过Punycode配置让重定向生效,但用户仍会看到证书错误:

  1. 同样使用Punycode格式的域名配置server_name
  2. 复用flaatinfo.dk的证书配置重定向:
server {
    listen 443 ssl;
    server_name xn--fltinfo-0za.dk www.xn--fltinfo-0za.dk;
    ssl_certificate /path/to/flaatinfo.crt;
    ssl_certificate_key /path/to/flaatinfo.key;
    return 301 https://flaatinfo.dk$request_uri;
}

注意:此方案中浏览器仍会触发证书错误,用户需手动确认才能进入重定向,仅适合临时过渡使用。


补充说明

Nginx内部以ASCII格式处理域名,因此配置带特殊字符的IDN域名时,必须使用Punycode格式的域名作为server_name,否则无法正确匹配用户请求。

内容的提问来源于stack exchange,提问作者xjimdim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 08:15:42