選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
4 分鐘閱讀時間 (730 個字)

為台智雲的 Web 補上 https 憑證

Screen6

過去筆者慣於將 Web 部署在 Azure 上,以 https 協定訪問是標準配備。不過這次因為上雲的服務還要往後端 Request 一個 Web UI 當資料來源,而且這個後端限定僅接受來自於 TW 的要求,所以只好往台智雲上搬。不過上去之後,因為只有一個 IP 地址,其他諸如 FQDN、SSL 等都要自行準備,過程有點繁瑣,於是以本文嘗試簡化並紀錄下來。

首先要在台智雲開一部虛擬主機,因為 Web 是用 DotNET 8 寫的,當然選便宜的 Linux 就夠,每小時成本可以壓在 NT$2 以下;因為對外服務,所以要一個 Public IP,不是經常開關,所以浮動的也可以。

這裡要記得檢查一下台智雲相關的 Security Group 設定,我看到的是 ssh https 有開,http 需要自己補。這個只是為了憑證申請過程中使用,所以不用擔心,我們主要的流量還是走安全的 https。

拿 Public IP 去配一個免費的 FQDN 還算容易,No-IP 或 DuckDNS 都可以,當然還有很多選擇,看個人喜歡或熟悉。

為了簡化安裝設定,在虛擬主機上先裝 Docker 為底,未來我們會起兩個 Container,一個負責 DotNET Web,另一個負責反向代理兼憑證管理,這個 Image 叫 Secure Web Application Gateway (SWAG),可以讓我們省很多事。Compose.yaml 內容如下,一次就把兩個 Container 開啟。

services:
  swag:
    image: lscr.io/linuxserver/swag
    cap_add:
      - NET_ADMIN
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Taipei
      - URL=yourFQDN
      - VALIDATION=http
    volumes:
      - /home/ubuntu/swag/config:/config
    ports:
      - 443:443
      - 80:80
    restart: unless-stopped
  aspnet8:
    image: mcr.microsoft.com/dotnet/aspnet:8.0
    volumes:
      - /home/ubuntu/out:/app
    working_dir: /app
    ports:
      - 8080:8080
    command: dotnet ./myWeb.dll

有幾個地方要特別說明的:

  • 第 10 行請改成免費配來的 FQDN,例如 xxx.ddns.net 之類的
  • 第 13 行要準備一個空目錄讓 SWAG 放檔案,請把這目錄的絕對路徑替換掉 :/config 前面的部份
  • 第 21 行表示 DotNET Publish 到 /home/ubuntu/out 目錄,請讀者依實際狀況調整
  • 第 25 行表示 Web 主程式檔名,當然也請依實際狀況調整
這兩個 Container 第一次順利跑起來之後,我們要修改 SWAG /config/nginx/site-confs/default.conf 把封面圖上 Proxy 那條線補上:
...
    location / {
        proxy_pass         http://aspnet8:8080/;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $http_host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
...

只要找到 location / 這個段落人修改,前後的一些內容都不變,只是在此省略。要注意第三行 aspnet8 呼應到 compose.yaml 第 18 行,埠號 8080 對應到第 24 行。改完後可以下指令單獨請 SWAG 重新載入設定,或簡單地重啟也會生效。一切正常的話,我們就可以從外界以 https 訪問到台智雲上的 Web 應用程式了。

API Testing(Using Postman Script)—上
桌面應用程式效能測試的規畫與實踐 讀後心得
 

評論 1

David Chou (周彥江) 於 2024/11/14, 週四 07:24

最近才聽說,拿到 IP 的台智雲虛擬機,內定已有一個 FQDN 長得像 xxx-xxx-xxx-xxx.twcc.ai,又可以省一道手續。

最近才聽說,拿到 IP 的台智雲虛擬機,內定已有一個 FQDN 長得像 xxx-xxx-xxx-xxx.twcc.ai,又可以省一道手續。
已經注冊了? 這裡登入
Guest
2025/06/09, 週一

Captcha 圖像