文档章节

Nginx反向代理中文域名

李丁玲
 李丁玲
发布于 2016/03/15 11:49
字数 1104
阅读 109
收藏 1

1、修改nginx.conf配置文件

  http {
    # 中文域名解析需配置size为64
    server_names_hash_bucket_size 64;
    client_max_body_size   10m;
    include       mime.types;
    default_type  application/octet-stream

....

}

2、转码http://www.webmasterhome.cn/tool/punycode.asp

3、配置代理地址

     server {
        listen       80;
        server_name www.xn--fiqs8s.com;       
 location / {
          proxy_pass http://123.45.67.8:802/;
          proxy_set_header   Host    $host; 
          proxy_set_header   X-Real-IP   $remote_addr; 
          proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for; 
        }
    }


中文域名分为两类:
1、一类是域名后缀为英文字母的国际中文域名和别国中文域名,比如:中文.com,中文.net,中文.biz,中文.cc,中文.hk,中文.tm,中文.tv,中文.tw;
2、一类是域名后缀为中文的纯中文国内中文域名,比如:中文域名.中国,中文域名.公司,中文域名.网络;
  中文域名在解析的时候,需要先转换为 xn--fiq228c.com或xn--fiq228c.cn形式的ASCII码,这种编码称为PunyCode。纯中文域名不被标准的解析服务器支持,要实现对这种纯中文域名的正确访问,ISP需要做相应的修改,以便能够正确解析中文域名。同时CNNIC也提供了专用服务器,用户只要将浏览器的DNS设置指向这台服务器,它同样可以完成对纯中文域名的正确解析。另外,考虑到现在有些ISP还没有做修改,而有些用户又不方便将DNS设置指向CNNIC提供的服务器,纯中文域名会被加上.cn后缀,即对每一个纯中文域名同时有两种形式:纯中文域名和纯中文域名.CN, 如:"中文域名.网络"和"中文域名.网络.CN"。这样即使ISP还没有做相应的修改,用户也可以正确使用中文域名。

什么是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)”,它描述了如何准备一个多语种域名,包括对一个域名字段进行映射、正规化以及禁止性过滤等等操作。

© 著作权归作者所有

共有 人打赏支持
下一篇: 启动Nginx失败
李丁玲
粉丝 2
博文 10
码字总数 1917
作品 0
西安
项目经理
私信 提问
Nginx反向代理并替换内容模块ngx_http_substitutions_filter_modu

====== 以前写过Nginx反向代理通过with-httpsubmodule和substitutions4nginx模块替换正文内容和URL和在军哥lnmp的环境下配置反向代理服务器的方法教程 本教程基于军哥lnmp环境,其他Nginx类同...

adbug
2016/02/16
707
0
Nginx中文域名配置

Nginx虚拟主机上绑定一个带中文域名,比如linuxeye.中国,浏览器不能跳转。 why? 因为操作系统的核心都是英文组成,DNS服务器的解析也是由英文代码交换,所以DNS服务器上并不支持直接的中文域...

袁梓皓
2016/03/09
21
0
请教如何禁用apache的url encode

我的tomcat可以处理中文url参数, 但加上apache做反向代理后 apache会把url里的中文都encode,然后传给tomcat tomcat反而不能获取到正确的参数了 能不能设置让它别帮我encode了 比如 http:/...

幸福的旁边
2011/03/16
2.1K
10
高性能 Web 服务器--Nginx

Nginx(发音同 engine x)是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个 BSD-like 协议下发行,可以在 UNIX、GNU/Linux、BSD、Mac OS X、Solaris,...

匿名
2008/09/07
407.8K
55
nginx 官方中文文档

nginx 官方文档有简体中文了,有taobao提供 Simplified Chinese translation of the site by the Server Platforms Team at Taobao.com 文档链接是 http://nginx.org/cn/ Nginx(发音同 engi......

光石头
2012/07/01
13.6K
10

没有更多内容

加载失败,请刷新页面

加载更多

数据库技术-Mysql主从复制与数据备份

数据库技术-Mysql 主从复制的原理: MySQL中数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”...

须臾之余
昨天
12
0
Git远程仓库——GitHub的使用(一)

Git远程仓库——GitHub的使用(一) 一 、 Git远程仓库 由于你的本地仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要一下设置: 步骤一、 创建SSH key 在用户主目录下,看看有没有.ss...

lwenhao
昨天
2
0
SpringBoot 整合

springBoot 整合模板引擎 SpringBoot 整合Mybatis SpringBoot 整合redis SpringBoot 整合定时任务 SpringBoot 整合拦截器...

细节探索者
昨天
0
0
第二个JAVA应用

第二个JAVA应用 方法一:配置文件: # cd /usr/local/tomcat/conf/# vim server.xml</Host> <Host name="www.wangzb.cc" appBase="/data/wwwroot/www.wangzb.cc" //引用所......

wzb88
昨天
0
0
2019年阿里Java面试必问:JVM与性能优化+Redis+设计模式+分布式

前言 一年之计在于春 金三银四已经要到来,2019的新的开始,作为一个开发人员,你是否面上了自己理想的公司,薪资达到心中理想的高度? 面试:如果不准备充分的面试,完全是浪费时间,更是对...

火力全開
昨天
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部