Nginx反向代理中文域名

一、修改nginx.conf配置文件nginx

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

....算法

}瀏覽器

二、轉碼http://www.webmasterhome.cn/tool/punycode.asp服務器

三、配置代理地址網絡

     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; 
        }
    }app


中文域名分爲兩類:
一、一類是域名後綴爲英文字母的國際中文域名和別國中文域名,好比:中文.com,中文.net,中文.biz,中文.cc,中文.hk,中文.tm,中文.tv,中文.tw;
二、一類是域名後綴爲中文的純中文國內中文域名,好比:中文域名.中國,中文域名.公司,中文域名.網絡;
  中文域名在解析的時候,須要先轉換爲 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)」,它描述瞭如何準備一個多語種域名,包括對一個域名字段進行映射、正規化以及禁止性過濾等等操做。編碼

相關文章
相關標籤/搜索