中文域名出来已经很长一段时间了,以往我们都没想过中文域名的配置问题。刚好公司最近有个项目有部署中文域名的需求,就把在 Nginx 服务器中配置中文域名方法笔记下来。
使用 Punycode 转码
在互联网域名中,DNS 通常只允许使用 ASCII 字符,因此为了在域名中表示非 ASCII 字符,Punycode 被用来转换这些字符。例如,一个包含非 ASCII 字符的域名可以使用 Punycode 转换为一个由普通的 ASCII 字符组成的域名。
Punycode 使用了基于 ASCII 字符的特殊编码方案,将 Unicode 字符串转换为 ASCII 字符串,使得这些域名可以被正确地解析和使用。这种转换通过一个特定的前缀(”xn--“)来表示 Punycode 编码的域名。
举个例子,假设有一个中文域名 “wangshuashua.中国”,它可能通过 Punycode 转换为 “wangshuashua.xn--iqs8s” 这样的 ASCII 字符串,在 DNS 中使用这个转换后的字符串来代表原始的中文域名。
中文域名变为Punycode编码即可,在线转码地址:http://tools.jb51.net/punycode/,如下图:
Punycode?
Punycode 是一种编码方案,用于在互联网上表示 Unicode 字符串的 ASCII 兼容形式。它允许将非 ASCII 字符(比如非英语字符,如中文、日文、俄文等)表示为 ASCII 字符串,使得这些字符可以在互联网基础设施中使用,特别是在域名系统 (DNS) 中。
使用 Punycode 转换域名后缀编码之后,在 nginx 配置文件里面把中文后缀转换成 转换之后的编码后缀即可。详细参考如下:
修改Nginx配置
server {
listen 80;
server_name wangshuashua.com wangshuashua.xn--fiqs8s;
}
保存,重载nginx:
service nginx reload