网站未备案临时解决方案总结

原文:http://blog.51cto.com/lxshopping/1591090

前段时间机房突然通知公司几个网站都没备案,在16点之前不关闭网站将直接封服务器ip,一问起来,是以前备案都放在武汉机房,9月份武汉机房撤掉了,结果备案信息都被干掉了,这都是前人留下的抗,没办法,拿方案出来吧,下面有二套方案:

方案一:做dns cname 到已备案的二级域名

方案二:转移到其他机房做301跳转或者代理,让原域名和已备案的二级域名都可以访问网站,双保险

 

首先施行方案一,简单说说思路,其实就是将未备案的域名cname到已备案的二级域名上面,做法很简单,只需要修改dns指向即可,如图:

wKiom1SRJe_CaniXAAB4WrojRTc216.jpg

例如:

未备案的域名:test.com

已备案的域名:abc.com

更改DNS记录,选取yeyou.abc.com作为临时域名,在test.com域名里面做如下更改:

test.com cname yeyou.abc.com

在abc.com域名需要添加yeyou.abc.com这个二级域名,并将这个域名指向到原服务器。

按照这个思路做好了,理论上现在未备案域名test.com的根指向的是yeyou.abc.com,这个是备案了的,

这样访问www.test.com会自动的去访问yeyou.abc.com这个二级域名对应的服务器,按道理来说,这样可以正常访问www.test.com,也不存在备案问题了,因为yeyou.abc.com这个备案了的,也就是在dns这一层就做了跳转,但是机房太二了,非得我这个test.com域名不能指向他们的服务器,上面的yeyou.abc.com指向的仍然是他们的服务器,由于代码不可能在半天之类全部修改完,网站有支付功能,所以接口、回调链接很多,机房要求那边ping test.com指向的ip不是他们的服务器,只能用方案二了。

最好找一台国外的vps,只要对国内访问速度可以就行了,然后做301跳转,如下图:

wKioL1SRKKrj_7tEAACxVXt4Qng701.jpg

将test.com A记录指向到国外的vps,yeyou.abc.com A记录指向到原服务器,在vps上面做nginx 301跳转到yeyou.abc.com这个域名,最终用户访问的还是原服务器,这样可以避免test.com未备案而被封的问题,程序也不需要做很大的改动,vps nginx配置如下:

<span style="color:#333333"><span style="color:#333333"><span style="color:black"><code class="language-bash">server
<span style="color:#999999">{</span>
listen 80<span style="color:#999999">;</span>
server_name test.com www.test.com api.test.com cps.test.com <span style="color:#999999">;</span>
 
<span style="color:#0077aa">if</span> <span style="color:#999999">(</span><span style="color:#ee9900">$host</span> <span style="color:#9a6e3a">=</span> <span style="color:#669900">'www.test.com'</span><span style="color:#999999">)</span><span style="color:#999999">{</span>
        rewrite ^/<span style="color:#999999">(</span>.*<span style="color:#999999">)</span>$ http://yeyou.abc.com/<span style="color:#ee9900">$1</span> permanent<span style="color:#999999">;</span>

<span style="color:#999999">}</span>

<span style="color:#0077aa">if</span> <span style="color:#999999">(</span><span style="color:#ee9900">$host</span> <span style="color:#9a6e3a">=</span> <span style="color:#669900">'api.test.com'</span><span style="color:#999999">)</span><span style="color:#999999">{</span>
        rewrite ^/<span style="color:#999999">(</span>.*<span style="color:#999999">)</span>$ http://api.yeyou.abc.com/<span style="color:#ee9900">$1</span> permanent<span style="color:#999999">;</span>

<span style="color:#999999">}</span>

<span style="color:#0077aa">if</span> <span style="color:#999999">(</span><span style="color:#ee9900">$host</span> <span style="color:#9a6e3a">=</span> <span style="color:#669900">'cps.test.com'</span><span style="color:#999999">)</span><span style="color:#999999">{</span>
        rewrite ^/<span style="color:#999999">(</span>.*<span style="color:#999999">)</span>$ http://cps.yeyou.abc.com/<span style="color:#ee9900">$1</span> permanent<span style="color:#999999">;</span>

<span style="color:#999999">}</span>

<span style="color:#999999">}</span></code></span></span></span>

原nginx的配置就很简单了,只需要将server_name www.test.com更换为yeyou.abc.com;即可,其他的都不用更改。用户访问的过程,如下图 :

wKiom1SRK8aTDleZAACbYDuyvGQ288.jpg

国外vps只起一个中间过渡,可以在nginx日志里面看到状态码是301,将一部分老用户访问test.com转移到新域名yeyou.265g.com上。

但是有个问题,所有访问www.test.com的用户会被自动跳转到yeyou.abc.com,这样感觉很不爽,最后修改成了反向代理,用户访问域名不变,仍然会跳转到原服务器,具体做法:

vps配置如下:

<span style="color:#333333"><span style="color:#333333"><span style="color:black"><code class="language-bash">server
<span style="color:#999999">{</span>
listen 80<span style="color:#999999">;</span>
server_name www.test.com<span style="color:#999999">;</span>
access_log  logs/www.test.access.log  main<span style="color:#999999">;</span>
        ssi on<span style="color:#999999">;</span>
        proxy_redirect     off<span style="color:#999999">;</span>
        proxy_set_header   Host             <span style="color:#ee9900">$host</span><span style="color:#999999">;</span>
        proxy_set_header   X-Real-IP        <span style="color:#ee9900">$remote_addr</span><span style="color:#999999">;</span>
        proxy_set_header   X-Forwarded-For  <span style="color:#ee9900">$proxy_add_x_forwarded_for</span><span style="color:#999999">;</span>
        proxy_next_upstream error <span style="color:#dd4a68">timeout</span> invalid_header http_500 http_502 http_503 http_504<span style="color:#999999">;</span>
        proxy_max_temp_file_size 0<span style="color:#999999">;</span>
        proxy_connect_timeout      90<span style="color:#999999">;</span>
        proxy_send_timeout         90<span style="color:#999999">;</span>
        proxy_read_timeout         90<span style="color:#999999">;</span>
        proxy_buffer_size          4k<span style="color:#999999">;</span>
        proxy_buffers              4 32k<span style="color:#999999">;</span>
        proxy_busy_buffers_size    64k<span style="color:#999999">;</span>
        proxy_temp_file_write_size 64k<span style="color:#999999">;</span>
location  ^~ / <span style="color:#999999">{</span>
<span style="color:slategray">#       proxy_cache abc_cache;</span>
        proxy_set_header Host yeyou.abc.com<span style="color:#999999">;</span>   <span style="color:slategray">#注意要指定跳转的域名,否则会无法跳转,出现502</span>
        rewrite ^<span style="color:#999999">(</span>.*<span style="color:#999999">)</span>$ /<span style="color:#ee9900">$1</span> <span style="color:#0077aa">break</span><span style="color:#999999">;</span>
        proxy_pass http://yeyou.abc.com<span style="color:#999999">;</span> <span style="color:slategray">#本地服务器要能解析这个域名 </span>
<span style="color:#999999">}</span>
<span style="color:#999999">}</span></code></span></span></span>

原服务器nginx配置更上面一样,只需要将server_name 指向yeyou.abc.com即可,这样用户访问的过程,如下图:

wKiom1SRLjezCgHhAACYfeN3HT0098.jpg

可以在nginx日志里面看到状态码是200,当用户去访问www.test.com,vps会自动将test.com转换成yeyou.abc.com来提供用户访问,这样对用户的体验来说是很好的,在浏览器中不会跳转到yeyou.abc.com,用户还是用test.com去访问网站,对用户来说是透明的。

 

遇到的问题:

常用的nginx反向代理与上面反向代理的区别?

常用的nginx反向代理配置:

<span style="color:#333333"><span style="color:#333333"><span style="color:black"><code class="language-bash"><span style="color:slategray">## Basic reverse proxy server ##</span>
<span style="color:slategray">## Apache backend for www.quancha.cn ##</span>
upstream apachephp  <span style="color:#999999">{</span>
    server ip:8080<span style="color:#999999">;</span> <span style="color:slategray">#Apache</span>
<span style="color:#999999">}</span>
<span style="color:slategray">## Start www.quancha.cn ##</span>
server <span style="color:#999999">{</span>
    listen 80<span style="color:#999999">;</span>
    server_name  www.quancha.cn<span style="color:#999999">;</span>
    access_log  logs/quancha.access.log  main<span style="color:#999999">;</span>
    error_log  logs/quancha.error.log<span style="color:#999999">;</span>
    root   html<span style="color:#999999">;</span>
    index  index.html index.htm index.php<span style="color:#999999">;</span>
    <span style="color:slategray">## send request back to apache ##</span>
    location / <span style="color:#999999">{</span>
        proxy_pass  http://apachephp<span style="color:#999999">;</span>
        <span style="color:slategray">#Proxy Settings</span>
        proxy_redirect     off<span style="color:#999999">;</span>
        proxy_set_header   Host             <span style="color:#ee9900">$host</span><span style="color:#999999">;</span>
        proxy_set_header   X-Real-IP        <span style="color:#ee9900">$remote_addr</span><span style="color:#999999">;</span>
        proxy_set_header   X-Forwarded-For  <span style="color:#ee9900">$proxy_add_x_forwarded_for</span><span style="color:#999999">;</span>
        proxy_next_upstream error <span style="color:#dd4a68">timeout</span> invalid_header http_500 http_502 http_503 http_504<span style="color:#999999">;</span>
        proxy_max_temp_file_size 0<span style="color:#999999">;</span>
        proxy_connect_timeout      90<span style="color:#999999">;</span>
        proxy_send_timeout         90<span style="color:#999999">;</span>
        proxy_read_timeout         90<span style="color:#999999">;</span>
        proxy_buffer_size          4k<span style="color:#999999">;</span>
        proxy_buffers              4 32k<span style="color:#999999">;</span>
        proxy_busy_buffers_size    64k<span style="color:#999999">;</span>
        proxy_temp_file_write_size 64k<span style="color:#999999">;</span>
   <span style="color:#999999">}</span>
<span style="color:#999999">}</span></code></span></span></span>

都是指向后端ip+端口的形式。

上面nginx跳转URL不变,以域名的形式进行代理。

注意:需要代理服务器能够解析要代理的域名。

 

总结:目前在国内,网站如果没有备案想上线的话,也只能这么做了,写下来留着以后参考用。

 

 

xnil

1楼  2014-12-18 12:58:051

方案一:就不要拿出来误人子弟了,自己相当然的以为一条cname就可以解决,还扯什么机房太二

  • 作者lxshopping:@xnil 

    兄台说的对,当时只是没办法临时想出来的,结果是行不通,只是留做自己以后参考。

    2014-12-19 09:27:03

    回复

itwork

2楼  2014-12-18 18:54:521

方案一,行不通,备案是对域名,不对IP的|@|方案二,可行,是没办法中的办法了

  • 作者lxshopping:@itwork 

    备案是对域名,所以才想到把这个没备案的域名cname到已经备案的二级域名上,然后再将这个二级域名指向原服务器,用户访问的应该是这个已备案的二级域名,只是机房要求未备案的域名不能指向他们的服务器,所以才用方案二临时解决的。

    2014-12-19 09:33:14

    回复

ylky_2000

3楼  2014-12-30 08:50:35

方案二有风险,封ip啊,解封ip要很长时间。预计1-3个月,看人品。|@|没有备案就赶紧关了域名映射关系吧。|@|对方提前通知你们了已经很看得起了。|@||@|

cmk577

4楼  2018-05-09 13:08:45

大佬,有没有详细的方案,上面看不太懂,公司的域名要重新备案,网站不停

 

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页