關於對整站進行二級域名的改造
緣由
為什麼需要這樣呢?
這部分完全可以在koa2裡面完成,我用到了koa-mount,這個庫可以用來實現將路徑指向不同的服務。
app.use(mount('/blog', blog));
app.use(mount('/demo', demo));
app.use(mount('/portal', portal));
app.use(mount('/web', web));
然後就達到了我的目的,不同的地址指向不同的專案。
就這樣持續了一個多月。
後來發現一個問題,由於只是相對路徑不一樣,域名完全一致,所以這些專案的storage
是完全共享的,比如我在blog
頁面登入了,把一些登入資訊存到了localstorage
demo
裡面也有登入,如果欄位和blog
一致,就會造成資料被覆蓋的問題。
這應該算是自己規劃的不足吧,在瀏覽器看來https://www.codelabo.cn/blog
和https://www.codelabo.cn/demo
完全是同一個網址,只是進到了不同的子頁面,所以資料是完全共享的。
那麼如何解決呢?
思考
其實各大網站都有這樣的現象,因為業務繁多,主域名都只要一個,比如百度就一個https://www.baidu.com
,其他業務怎麼描述的呢?
用到了二級域名,甚至是三級域名!
比如
還有很多都是這種表述方式
這也是二級域名最正確的使用方式
解決
那麼我現在頁決定使用二級域名。
二級域名的申請是免費的,我是在騰訊雲購買的域名,可以在
點選分配子域名至專案,然後又一個彈出框,填入你需要的二級域名名稱,然後確定
成功後進入協作子域名,就可以看到剛才申請的域名了
當然現在還是不能使用的,需要先進行解析,進去新增解析,這裡需要新增你的公網ip
然後看到解析正常,等幾分鐘就可以使用這個二級域名了
部署
以上完成了二級域名的申請和解析,那麼如何把專案和這個域名來關聯起來呢。
我這裡用到了nginx
,後面會分享一下nginx
的使用
你可以把二級域名當成一個全新的域名一樣,直接進行分配就行,比如
在nginx.conf
檔案中新增如下配置
server { listen 443;#https預設埠 server_name demo.codelabo.cn;#域名 ssl on; ssl_certificate ../ssl/1_demo.codelabo.cn_bundle.crt;#htpps證書 ssl_certificate_key ../ssl/2_demo.codelabo.cn.key; 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; location / { root /usr/local/src/web-app/www/demo; index index.html index.htm; expires 1d; } }
這裡用的是https,所以預設埠是443,如果是http,預設埠就是80,預設埠在瀏覽器可以省略不寫
然後重啟nginx
,使配置生效
nginx -s reload
這樣就完成了二級域名的部署。
小節
總的來說,這次改造還是很有成就感的,尤其是對我們這些前端來說,從剛開始對伺服器半點都不懂,逐步摸索,到最終上線,這些過程還是很有意義的
關於nginx
的安裝和初步使用,打算最近專門整理分析一下,敬請期待~