【轉】關於微信公衆號-網頁授權域名,域名配置個數不夠用的情況梳理

原文:https://blog.csdn.net/weixin_44050791/article/details/132095710

關於微信公衆號-網頁授權域名,域名配置個數不夠用的情況梳理

1. 網頁授權機制

如果用戶在微信客戶端中訪問第三方網頁,公衆號可以通過微信網頁授權機制,來獲取用戶基本信息,進而實現業務邏輯

2. 去微信後臺配置域名

在網頁授權機制裏面 redirect_uri是我們的項目地址,這個項目地址的域名是需要到公衆號平臺配置的, 否則會提示redirect_uri域名與後臺配置不一致。

配置域名:登錄微信公衆平臺–設置–公衆號設置–功能設置–網頁授權域名
在這裏插入圖片描述

3. 域名不夠用怎麼辦

在微信公衆號管理後臺,我們可以看到網頁授權域名,只能配置2個。對於正規業務和比較少的業務來說比較簡單,配置一個域名就可以。

但是我們公司比較混亂,經常會出現:在一個公衆號項目塞入3個產品線的項目,各個產品線又都有自己的獨立二級域名
比如A產品線的獨立域名是a.baidu.com
B產品線的項目域名是b.baidu.com
C產品線的項目域名是c.baidu.com

更槽糕的是此時域名已經被佔用了一個,一個同事已經配置了一個域名2 (吐槽:他甚至配置的還是一個深層次目錄),所以只剩下域名1可以用:
在這裏插入圖片描述

4. 解決方案

首先要明確,微信的網頁授權域名和公衆號項目代碼的訪問域名,是要一致的。

4.1 不新增配置域名1,會怎麼樣

如果不新增域名1的配置,大家一起共用當前這個域名2的話,那麼以後該公衆號下面的所有產品線的項目代碼都要塞到這個域名2下面。

首先這是不太合理的,從域名上來看,比如公用域名設置的是news.baidu.com/list/,但是其中一個項目的業務是考試(exam)。如果把考試項目因爲業務需要要鏈接發給用戶使用,那麼域名裏面的news和list就對於考試業務來說就顯的不太正規。

其次上線也不太方便,如果有運維統一上線還好說,如果是各項目獨立負責上線就很麻煩了,你的項目塞在別人的目錄下面,每次上線還要拉人別人,上線次數多了怎麼辦,深夜上線怎麼辦。而且有的部門喜歡碰瓷。。。。

4.2 如何新增配置域名1

配置一個比較通用的域名,比如yth.baidu.com 。
然後在這個通用域名的機器上,配置nginx 代理轉發(proxy_pass),轉發到專門的項目就可以

比如A項目的實際域名是a.baidu.com。使用這種方案以後,在微信公衆號裏面的訪問路徑則是yth.baidu.com/a
比如B項目的實際域名是b.baidu.com。使用這種方案以後,在微信公衆號裏面的訪問路徑則是yth.baidu.com/b

這樣的做的原因有以下幾點:
① 多條業務線,可以不用塞在一個目錄下面。大家獨立管理部署自己的業務線項目代碼就可以。yth.baidu.com則統一負責微信配置文件的驗證和nginx轉發

  # yth.baidu.com機器的nginx配置文件

  # 微信驗證文件
  location /MP_verify_666.txt {
    add_header  Content-Type  "text/plain";
    alias /data/servers/gateway/MP_verify_666.txt;
  }

  location /a/  {
    proxy_pass https://a.baidu.com/;
  }


  location /b/  {
    proxy_pass https://b.baidu.com/;
  }

1234567891011121314151617

② 域名友好型,各項目業務線可以在yth.baidu.com下面設置符合自己業務需求的目錄名。比如新聞業務可以設置爲yth.baidu.com/news/ , 考試業務可以設置爲 yth.baidu.com/exam/

③ 具備可擴展性,後期再在當前公衆號增加其他業務線的項目,只需要在yth.baidu.com 的nginx配置文件 增加一條proxy_pass配置即可

④ 就我們公司而言,負責轉發的這臺機器,還配有阿里雲的slb(負載均衡)。可以在一定程度上緩解訪問量過大造成的壓力

⑤ 還有一點特殊情況是:除了使用域名+服務器,當然也可以直接使用oss來處理當前的情況。

但是這裏要注意一點,oss不支持前端那種history 路由,它會把這種形式當做真實目錄去查找。比如b.baidu.com/news/details 對應的是一個前端頁面,但是oss會真實去找news目錄和details,從而導致訪問失敗。

當然也可以把項目改成hash路由,但是不方便,而且直接把項目改成hash以後會不會有什麼其它潛在的問題,再者說,如果項目不在自己手裏,你想讓別人改,別人還不一定願意改。

基於這種情況考慮和後續擴展性的考慮,最終沒有使用oss的方案

4.3 拋磚引玉

大家有什麼更好的方案,可以提出來

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