nginx配置中文域名
开始配置直接写的中文域名,但是解析不到正确的server,后来google了一把终于找到原因了,当在浏览器中敲入www.明月博客.com时,浏览器会转为www.xn--9kRq6Qw2Iu2A.com
其实中文域名就是一个经过编码的英文域名(中文域名–>punycode编码–>英文域名)
在线转换地址:http://www.webmasterhome.cn/tool/punycode.asp
什么是PunyCode?
英文域名在IIS或Apache中的虚拟主机设置,可以直接使用英文域名,如webmasterhome.cn。
中文域名在IIS或Apache中应如何设置主机头呢?如”中国站长之家.com”,
答案是:在进行设置之前要先把中文域名转化成为PunyCode编码,然后在主机头设置里面填上中文域名所对应的PunyCode编码(xn--fiqsC146Ah4ex80Cro7A.com)便可。
新的国际化域名的标准在网域名称编码上,为了保留向下兼容性及不影响现有的应用程序协议,因此将多国语言域名转成ASCII编码,而这种编码称为『punycode』。
因为经过 Nameprep处理过的国际化域名是以 Unicode 序列的形式表示的。但现有的 DNS系统只支持用 ASCII字符表示的域名,所以要对 Unicode 序列进行 ACE (ASCII-compatible encoding) 编码,把 Unicode序列表示的域名转换成 ASCII 字符串表示的ACE 域名。
PunyCode是一种专为国际化域名而设计的高效ACE 编码方式。它可以在Unicode序列和ASCII 字符串之间进行唯一的和可逆的转换。转换的过程中,Unicode 序列中的ASCII字符保持不变,国际化字符则用字母和数字来表示。它的实质是一种用数量有限的基本字符(字母和数字)来唯一地表示大字符集(Unicode)中的字符的通用算法。域名中的字符,包括 ASCII 码和 Unicode 码,都是作为整数进行处理。
PunyCode则是将一个经过Nameprep处理过的IDN,从一个8位的编码的形式转换为7位编码的形式。目前Internet DNS一向是7位ASCII编码的环境,经过这个PunyCode转码程序,便将IDN从一个8 位的IDN转换为与现有DNS环境兼容的编码。
在DNS服务器方面,需要将IDN以PunyCode的编码形式来设定。因为PunyCode本身就是一种7位的编码,与ASCII编码完全兼容,所以可适用设定于目前所有可用的DNS版本, 也就是说可以不需要为了设定PunyCode而重新安装BIND新版本。但是若是需要使用DNAME指令来设定资源记录(Resource Record),则需先提升为BIND9的版本。
什么是Nameprep?
Nameprep 是“A Stringprep Profile for Internationalized Domain Names (IDN)”,它描述了如何准备一个多语种域名,包括对一个域名字段进行映射、正规化以及禁止性过滤等等操作。
近期评论