兼容性

IDN

server {
    listen      80;
    server_name xn--e1afmkfd.xn--p1ai www.xn--e1afmkfd.xn--p1ai;
}

IDN 说明

  • xn--e1afmkfd.xn--p1ai:使用 Punycode 编码的国际化域名

IDN 原理: IDN(Internationalized Domain Name)是国际化域名,使用 Punycode 编码。Nginx 支持使用 Punycode 编码的国际化域名。

IDN 转换

可以使用 idn 命令将国际化域名转换为 Punycode 编码:

idn 中国.cn
xn--fiqs8s.cn

IDN 转换说明

  • idn 命令用于将国际化域名转换为 Punycode 编码

IDN 转换原理idn 命令用于将国际化域名转换为 Punycode 编码,便于在 Nginx 中使用。

重复名称

server {
    listen      80;
    server_name example.org www.example.org
                www.example.org; # 重复
    ...
}

重复名称说明

  • www.example.org:重复的服务器名称

重复名称原理: 重复的服务器名称会被忽略,不会影响匹配。

特殊字符

server {
    listen      80;
    server_name example.org www.example.org;
    server_name "~^(?<user>.+)\.example\.net$";
}

特殊字符说明

  • ~^(?<user>.+)\.example\.net$:使用正则表达式匹配域名

特殊字符原理: 特殊字符需要转义,如 . 需要转义为 \.

服务器名称转义

服务器名称中的特殊字符需要转义:

server_name "~^(?<user>.+)\.example\.net$";

服务器名称转义说明

  • \.:转义 . 字符

服务器名称转义原理: 服务器名称中的特殊字符需要转义,如 . 需要转义为 \.

注意事项

  • IDN 使用 Punycode 编码
  • 重复名称会被忽略
  • 特殊字符需要转义
  • 使用 idn 命令转换国际化域名