問題描述
因為中國區的App Service對外(公網訪問)需要進行ICP備案,所以很多情況下,Web應用部署到App Service後,都是通過Application Gateway(應用程式閘道器)來對外網暴露,提供公網訪問。
上圖列出了使用Application Gateway後,外網訪問App Service的示意圖。 如果直接訪問,則會出現403的錯誤頁面。
那麼,在這樣的情況下,我們如何來實現通過公網暴露Git的URI,實現外網成功部署App Service的程式碼呢?
問題解答
當然,可以通過Application Gateway 來暴露 App Service預設的GIT Repository 地址 :https://<appservicename>.scm.chinacloudsites.cn:443/<appservicename>.git
如何配置Application Gateway 與App Service的服務,參考官方文件:使用應用程式閘道器配置應用服務(https://docs.azure.cn/zh-cn/application-gateway/configure-web-app?tabs=customdomain%2Cazure-portal)
在配置的過程中,必須注意以下三點:
第一點:為Application Gateway 配置自定義域名 (本次實驗中只是短暫使用,所以使用公網IP地址進行解析)
第二點:App Gateway 的後端池(Backend Pool) 不能直接選擇App Service,需要選擇 IP Address or FQDN,並輸入SCM的域名。 如: <appservicename>.scm.chinacloudsites.cn
第三點:為App Gateway配置自定義健康探測(Health Probes), Host 為SCM域名(<appservicename>.scm.chinacloudsites.cn), Path 可以指向 /<appservicename>.git 或者是SCM的跟目錄 / 。
由於SCM站點的訪問時需要認證的,App Gateway發出的探測結果都是401 - Unauthorized 。所以就必須接受401是一個正確的探測結果才行。
以上三點配置完成後,可以回到Application Gateway的Backend Health頁面,檢視後端池的健康狀態,只有當後端池狀態為Health時,才能成功訪問到後端,否則這會得到502頁面。
如果第三步中沒有配置 401為一個匹配的返回狀態,則 Backend Health的結果顯示為:
Received invalid status code: 401 in the backend server’s HTTP response. As per the health probe configuration, 200-399 is the acceptable status code. Either modify probe configuration or resolve backend issues.
當Application Gateway設定完成後,開始Local Git的部署驗證:
首先,複製出App Service Local Git Repository 的地址,把 HTTPS 改為 HTTP, 並用 Application Gateway的IP地址代替域名
然後,使用 git clone http://<ip address>/<appservicename>.git,獲取原始庫中程式碼
最後,使用 git commit / git push / git remote -v
Clone/Push截圖:
參考資料
使用應用程式閘道器配置應用服務:https://docs.azure.cn/zh-cn/application-gateway/configure-web-app?tabs=customdomain%2Cazure-portal
[END]