之前已經(jīng)把刷題博客 leetcode.wang 通過 nginx 成功放到" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營銷資訊 > 建站知識 > 通過 js 或者 nginx 實現(xiàn)域名重定向

通過 js 或者 nginx 實現(xiàn)域名重定向

時間:2023-02-09 00:39:01 | 來源:建站知識

時間:2023-02-09 00:39:01 來源:建站知識

大學的時候買了 windliang.cc 的域名當做自己的博客,然后一直使用的是 githubpages 服務。最近國內訪問 github 有些慢,想把博客遷移到阿里云的服務器上。

之前已經(jīng)把刷題博客 leetcode.wang 通過 nginx 成功放到阿里云上了,參考 云服務器搭建網(wǎng)站全過程。

但是大學買的 .cc 域名有一個最大的問題,現(xiàn)在不能備案了,不能備案的話就不能放到國內服務器上。于是前段時間又買了一個 windliang.wang 域名,備案成功后,按照之前的總結,很快就放到了阿里云上。

現(xiàn)在需要做的是當訪問 .cc 域名的時候,重新定向到 .wang 域名上。

有兩種方式,一種是在前端通過 js 進行重定向,另一種就是在后端通過 nginx 。

通過 js

因為 .cc 域名沒有備案,所以我們需要在國外的服務器上放一個 html 來實現(xiàn)重定向。

最簡單的方法,就是依舊使用 githubpages 服務。需要的index.html 寫法如下。

<script> var domain = "windliang.wang"; //得到 https://windliang.cc/XXXXX var src = window.location.href; //得到 https var prtc = src.substring(0, src.indexOf(':')); //得到 /XXXXX //indexOf 的第二個參數(shù)是開始查找的位置 var target = src.substring(src.indexOf('/', src.indexOf(':') + 3)); //組合在一起 //https://windliang.wang/XXXXX window.location.href = prtc + "://" + domain + target;</script>比較好理解,上邊也都注釋了。

我們只需要把它保存為 index.html 然后放到 github 倉庫里。







Settings 里開啟 pages 服務,并且綁定我們的域名。







并且在自己的 DNS 里面添加一個 CNAME 記錄,將域名解析到 wind-liang.github.io







然后再去打開 windliang.cc 的任意地址,就會自動跳轉到 windliang.wang 了。







這樣就成功實現(xiàn)域名的重定向了。但這樣做的話,可能對搜索引擎不是很友好,我也沒研究過 SEO,僅僅是我的猜測。下邊再介紹通過 nginx 方式的重定向。

但是這里有一點我不能理解的是,訪問 windliang.cc 的時候會有一個 404 的狀態(tài)碼,這里我也不知道是為什么,如果誰知道的話可以告訴我。

通過 nginx

因為原來的域名沒有備案,所以你需要一個國外的服務器,我的服務器操作系統(tǒng)是 Debian

對于 http 的重定向很簡單,只需要在 /etc/nginx/conf.d 文件夾下新建一個配置文件。

vim /etc/nginx/conf.d/windliang.cc.conf然后添加下邊的內容。

server { listen 80; server_name windliang.cc; return 301 https://windliang.wang$request_uri;}這樣的話就可以了。但因為監(jiān)聽的是 80 端口,所以只會對 http://windliang.cc 進行重定向,對于 https 的鏈接就無能為力了。

所以我們還需要為 windliang.cc 申請一個 SSL 證書,從而完成 https 的跳轉。

需要知道兩個東西。

Let's Encrypt

Let's Encrypt由互聯(lián)網(wǎng)安全研究小組(縮寫ISRG)提供服務。主要贊助商包括電子前哨基金會、Mozilla基金會、Akamai以及思科。2015年4月9日,ISRG與Linux基金會宣布合作。[5]
用以實現(xiàn)新的數(shù)字證書認證機構的協(xié)議被稱為自動證書管理環(huán)境(ACME)。[6]GitHub上有這一規(guī)范的草案,[6][7]且提案的一個版本已作為一個Internet草案發(fā)布。[8]
Let's Encrypt宣稱這一過程將十分簡單、自動化并且免費。[9]
Certbot

Certbot is a free, open source software tool for automatically using Let’s Encrypt certificates on manually-administrated websites to enable HTTPS.
Certbot is made by the Electronic Frontier Foundation (EFF), a 501(c)3 nonprofit based in San Francisco, CA, that defends digital privacy, free speech, and innovation.
是一個可以幫我們自動獲取證書的軟件。我們可以在 官網(wǎng) 選擇自己的后端軟件以及操作系統(tǒng),它會列出我們需要操作的步驟。







然后就會出現(xiàn)下邊的步驟,我只截了一部分圖。







首先是安裝 Certbot。

sudo apt-get install certbot python-certbot-nginx有兩種獲得證書的方式,一種是自動獲取證書并且配置 nginx ,一種是僅獲取證書。因為我的網(wǎng)站是在阿里云上,不在這個服務器上,所以我采用僅獲取證書的方式。

運行之前,要把之前的 CNAME 記錄刪除,添加一個 A 記錄,將域名指向當前服務器的 ip







然后執(zhí)行下邊的命令。

sudo certbot certonly --nginx執(zhí)行過程中會讓你填郵箱,選擇域名,然后等幾秒鐘就生成成功了,記住最后輸出的證書的地址和密鑰的地址。







更改之前的配置文件。

vim /etc/nginx/conf.d/windliang.cc.conf80 端口和 443 端口合在一起,然后將上邊保存的證書和密鑰地址填上。

server { listen 80; listen 443 ssl; server_name windliang.cc; ssl_certificate /etc/letsencrypt/live/windliang.cc/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/windliang.cc/privkey.pem; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; # 將80端口的http請求 301 重定向到新域名 if ( $scheme = "http" ) { return 301 https://windliang.wang$request_uri; } # 將443端口的https請求 rewrite 重定向到新域名 location / { rewrite ^(.*)$ https://windliang.wang$1 permanent; }}然后,就會發(fā)現(xiàn)可以得到 301 的狀態(tài)碼了。







最后一步,仔細看之前得到證書的截圖,會發(fā)現(xiàn)證書的有效期是 3 個月。但沒有關系,教程說如果通過上邊的步驟走的話,到期前它會自動幫我們更新。

我也不敢確定,只能到時候看它有沒有更新了,哈哈。

以上就是域名重定向的過程了,主要是前端通過 js 和后端通過 nginx。

上邊流程看起來很流暢,但今天用 nginx 做重定向的過程相當曲折了。因為一開始我只對 80 端口做了重定向,當我在瀏覽器輸入 windliang.cc 的時候,因為之前是通過 https 訪問的,所以瀏覽器會自動在前邊加上 https:// ,所以導致一直不能成功跳轉。

最神奇的是不知道為什么中午吃飯前有一次跳轉成功了,然后吃完飯回來心想再放個網(wǎng)站到服務器,畢竟國外服務器的話,域名就不需要備案了,但是突然發(fā)現(xiàn) windliang.cc 不能跳轉了。

然后自己就各種嘗試,一直以為是 nginx 的原因,各種看日志,重啟 nginx,但始終沒找到問題,把 nginx 重裝了兩遍,甚至想把服務器重裝了,最最后,終于意識到了這個 https 的問題,才想到了上邊的解決方案。

關鍵詞:實現(xiàn),通過

74
73
25
news

版權所有? 億企邦 1997-2025 保留一切法律許可權利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關閉