在nginx上配置一个中文域名,浏览器访问的时候访问不到。
查了资料才发现:现在的浏览器里面主动加入了中文域名自动转码,使用的一种叫做punycode码。同时因为操作系统的核心都是英文组成,DNS服务器的中文域名解析,也会把中文域名转成punycode码,然后由DNS解析punycode码。
什么是Punycode码?
Punycode是一个根据RFC 3492标准而制定的编码系统,主要用於把域名从地方语言所采用的Unicode编码转换成为可用於DNS系统的编码。 "中文域名"后缀不被标准的解析服务器支持,需转化为punycode码进行解析。
中文域名变为Punycode编码即可,在线转码地址:http://tools.jb51.net/punycode/,如下图:
当你在浏览器中输入“www.贝多芬.中国”,浏览器会自动转成“www.xn--css608gctg.xn--fiqs8s”,所以在nginx上配置的域名应该是“www.xn--css608gctg.xn--fiqs8s”,才能指向DNS服务器的中文域名“www.贝多芬.中国”对应的punycode码“www.xn--css608gctg.xn--fiqs8s”。