Friday, July 21, 2017

反向绑定域名

反向绑定域名,即将域名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 *