在把网站从托管独立服务器向云平台转移的过程中,在国内还有一个备案转移的问题,个人备案转服务商比较好办,单位备案转服务商也还不难,但个人备案要转为单位备案比较麻烦,需要先撤销以前的备案,这个域名才能再重新备案,而且撤销和重新备案的中间这段时间是不能放在国内服务器上访问的,无论是老接入商还是新接入商,通信管理局会检查服务器IP、网站内容、申报信息等。
为了解决这个问题,不中断网站的正常访问,只好把网站临时放在国外的服务器上,如果数据量大,要搬迁到国外服务器也是一个麻烦事,今天尝试了一下在国外服务器上简单设置一个反向代理就可以实现域名不变而访问依然放在国内服务器上的内容。
例如以前的域名是www.abc.com,把解析从国内IP:1.2.3.4改为国外IP:5.6.7.8,在国外服务器上设置Apache的httpd.conf,用rewrite规则和proxy反向代理来跳转或读取国内服务器上的内容(国内服务器上站点内容临时用另外一个域名例如abc.temp.com来访问,也可以用同一个域名,只是修改国外服务器上的/etc/hosts文件,让国外服务器从国内服务器上获取原始内容),以原有域名www.abc.com和国外IP 5.6.7.8的形式呈现国内服务器1.2.3.4上abc.temp.com的内容,让用户和通信管理局的检查人员来访问使用。
具体实现办法待以后整理完善后再发。这个办法算是比较简单的,国内用户访问速度上有影响,但总比中断几天访问要好。
附httpd.conf中的设置,注意先要安装开启rewrite, proxy等模块:
LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com ServerName www.abc.com ServerAlias www.abc.cn ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> RewriteRule ^(.*)$ http://abc.temp.com/$1 [P,L] ProxyPass / http://abc.temp.com/ ProxyPassReverse / http://abc.temp.com/ </VirtualHost>
用proxy是完全可以做到的,但国内用户访问的时候页面数据需要从国内服务器到国外服务器再到国内用户,绕得比较远,又加了rewrite规则希望用户只是到国外服务器上读取页面文件头部,而数据从国内服务器直接读取,不知道这个办法是否真能更快,先这样设了试一试看。
补充:阿里云备案客服打来电话,说以前的备案撤销期间,是需要关闭网站的,即使放在国外服务器上,管理局审核人员如果发现可以访问,也可能会驳回。这是说的另外一个域名,我上面这个还在办理中,需要再等一等看后续进展。另外,我也会咨询看能否把首页改为只显示“正在备案中”或者“正在备案中,无法访问”而保持网站的其它页面依然可以访问。
评论