網站未備案臨時解決方案總結

前段時間機房突然通知公司幾個網站都沒備案,在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配置如下:

server
{
listen 80;
server_name test.com www.test.com api.test.com cps.test.com ;
 
if ($host = 'www.test.com'){
        rewrite ^/(.*)$ http://yeyou.abc.com/$1 permanent;

}

if ($host = 'api.test.com'){
        rewrite ^/(.*)$ http://api.yeyou.abc.com/$1 permanent;

}

if ($host = 'cps.test.com'){
        rewrite ^/(.*)$ http://cps.yeyou.abc.com/$1 permanent;

}

}

原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配置如下:

server
{
listen 80;
server_name www.test.com;
access_log  logs/www.test.access.log  main;
        ssi on;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
location  ^~ / {
#       proxy_cache abc_cache;
        proxy_set_header Host yeyou.abc.com;   #注意要指定跳轉的域名,否則會無法跳轉,出現502
        rewrite ^(.*)$ /$1 break;
        proxy_pass http://yeyou.abc.com; #本地服務器要能解析這個域名 
}
}

原服務器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反向代理配置:

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

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

上面nginx跳轉URL不變,以域名的形式進行代理。

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


總結:目前在國內,網站如果沒有備案想上線的話,也只能這麼做了,寫下來留着以後參考用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章