Wednesday, January 20, 2021

反向綁定域名

反向綁定域名,即將域名B綁定到域名A上,用戶只要訪問B就等同於進入A,內容都是由A提供,但是瀏覽器地址欄中顯示的是域名B。反向綁定域名最初應該是應用在站點負載均衡和域名內網轉發上,利用反向綁定域名的方法可以將用戶的不同請求分發到不同的服務器上,從而實現性能均衡和減輕主服務器負擔的目的。

反向綁定域名的好處有很多,比如實現動靜分離,讓nginx來處理靜態文件,將動態內容請求分發到不同語言編寫的後端程序,而這些不用語言編寫的程序往運行在專門的服務器,如apache處理php、tomcat處理java、uwsgi處理python等等。

反向綁定域名在國內的應用也很廣泛,有些購買了國內空間的朋友,可以用一台美國的服務器充當反向綁定域名的服務器,強制將域名綁定到空間上。有些國外的空間或者網站無法訪問了,也可以用反向綁定域名的方法實現空間的正常訪問。

當然反向綁定域名的好處還不僅於此,本篇文章就來分享一下freehao123.com提供的搭建反向綁定域名平台的方法:

Apache和Nginx都可以實現反向綁定域名,Apache利用.htaccess的重寫規則實現域名綁定到另一個空間,Nginx利用conf規則配置,將域名跳轉到目標服務器上。

kangle除了是一個反向綁定域名的服務器軟件,還可以用kangle支持isapi、fastcgi、cgi、ajp、uwsgi、fcgi、hmux、http等多種擴展接口的特性,做負載均衡功能。

一、利用Apache虛擬主機空間作反向綁定域名

1、先找到一個支持自定義.htaccess的Apache服務器(免費空間或者虛擬主機),將空間的.htaccess文件下載到本地,用記事本打開,將下列代碼添加進去,再上傳,如下:

RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ http://freebbs.sinaapp.com/$1 [P]

2、注意把代碼中的網址替換成你想要反向綁定域名的域名,這裡是強制將域名綁定到SAE空間上,用了SAE的二級域名地址,詳情參考:谷歌GAE和新浪SAE成功綁定域名並DNS解析方法與教程。

3、將域名解析到第一步中的支持自定義.htaccess的Apache服務器(免費空間或者虛擬主機)。

二、利用Nginx反向綁定域名

1、要使用Nginx反向配置,你需要一個已經安裝了Nginx的VPS主機,部落用的是LNMP,創建一個虛擬機,綁定域名:alili.freehao123.info.

2、執行:cd /usr/local/nginx/conf/vhost,找到alili.freehao123.info.conf這個文件,刪除其中的內容,將以下代碼替換保存,上傳,覆蓋。

server {
        listen  80;
        server_name  alili.freehao123.info;
    
        location / {
        proxy_pass http://115.28.7.69:8080;
        proxy_redirect off;
       #媒體過期時間設長一些
         if ($request_filename ~* .*.(gif|jpg|jpeg|png|bmp|swf)$)
         {
        expires      30d;
         }
         #js和css過期時間設置為12小時;
         if ($request_filename ~ .*.(js|css)?$)
         {
        expires      12h;
         }
       proxy_set_header Host 115.28.7.69;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header Content-Type  $content_type;
       #proxy_hide_header Content-Type;
    }
	
 }

3、其中proxy_pass和proxy_set_header Host是阿里雲服務器的IP地址。

4、阿里雲服務器也是安裝了LNMP,同樣也是創建一個虛擬機,綁定的域名也是alili.freehao123.info,找到該域名conf這個文件,是改動的就是listen ,其它的都是一樣的。

5、這是我的阿里雲服務器的Nginx反向配置,大家可以參考一下。

log_format  alili.freehao123.info  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" $http_x_forwarded_for';
server
	{
		listen       8080;
		server_name alili.freehao123.info localhost;
		index index.html index.htm index.php default.html default.htm default.php;
		root  /home/wwwroot/alili.freehao123.info;

		include wordpress.conf;
		location ~ .*.(php|php5)?$
			{
				try_files $uri =404;
				fastcgi_pass  unix:/tmp/php-cgi.sock;
				fastcgi_index index.php;
				include fcgi.conf;
			}

		location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
			{
				expires      30d;
			}

		location ~ .*.(js|css)?$
			{
				expires      12h;
			}

		access_log  /home/wwwlogs/alili.freehao123.info.log  alili.freehao123.info;
	}

6、改完配置後,執行:/usr/local/nginx/sbin/nginx -t,如果出現:nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok和nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful表示修改代碼正確。

三、利用kangle web搭建反向綁定域名服務器

1、安裝kangle 官網:http://www.kanglesoft.com/
kangle又叫kangle web服務器,是一款跨平台、功能強大、安全穩定、易操作的高性能web服務器和反向代@理服務器軟件。kangle的訪問控制理念來自linux的iptables防火牆。
kangle實現很多最小化的匹配模塊和標記模塊,通過組合,反轉可以實現最複雜的需求,從而實現強大的訪問請求控制,如:url,ip地址,連接數/網速限制,http頭,時間控制,多種http認證,服務器負載,url重定向,url重寫,內容過濾等等。
執行以下代碼,就可以在Linux安裝上kangle了。(註:kangle可以安裝在linux、windows、freebsd、openbsd、netbsd、solaris等)

yum -y install wget make automake gcc gcc-c++ pcre-devel zlib-devel sqlite-devel openssl-devel

wget http://www.kanglesoft.com/download/zcore.php?os=src

tar xzf kangle-*.tar.gz

cd kangle-*

./configure --prefix=/vhs/kangle --enable-disk-cache --enable-ipv6 --enable-ssl --enable-vh-limit

make

make install

/vhs/kangle/bin/kangle

通過瀏覽器打開http://服務器ip地址:3311/ ,第一次進入輸入 用戶名admin,密碼kangle。

這是kangle後台管理中心,有請求控制、回應控制、擴展、虛擬主機、回寫數據、配置等功能。

2、依次進入“擴展–>單節點服務器”設置源服務器。

3、這裡名字隨便填寫,反向代@理協議是Http,主機地址可以填寫域名,也可填寫ip地址。生存時間是訪問結束,繼續和服務器保持連接的時間。單位是:秒。生存時間默認為“0”,為“0”使用的則是短連接(訪問結束,立即斷開)。

4、點擊提交後,就可以看到自己反代的域名了。

5、接着我們就進入“請求控制”,點擊插入。

6、在匹配模處選擇“host”模塊。

7、接着在目標中選擇你剛剛添加的反代的域名服務器名稱,Host處填寫你的域名。

8、點擊提交後,你就可以看到域名反代完成了,此時如果域名已經解析到了該VPS主機,就會根據kangle的設定訪問到了阿里雲服務器了。

9、除了上面使用單節點服務器反向綁定域名的方法,我們還可以直接使用“請求控制”來反向綁定域名,登陸kangle管理後台,進入“請求控制”,“匹配模塊”和“標記模塊”都選擇host模塊。

10、接着就出現設置頁面了,目標選擇:繼續,第一個Host輸入要反代的域名,第二個Host輸入反代的服務器IP地址,Port為端口號,設置“0”表示動態端口號。

11、按照上面兩種方法設置好kangle,都可以實現域名反向綁定到空間上,kangle內置內存/磁盤兩級緩存,利用kangle的“緩存”設置,我們加快反代的訪問速度。

參考文章:
http://www.freehao123.com/park-domains/
http://www.freehao123.com/vps-nginx-kangle/
http://www.freehao123.com/gae-sae-yuming/

One comment

  1. 反向綁定域名我還是第一次見

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.