HTTPS 快速入門

本指南將向你展示如何立即啟動並執行 全自動管理 HTTPS

先決條件:

  • 基礎終端機 / 命令行操作技能
  • 對 DNS 有基本瞭解
  • 一個已註冊的公共域名
  • 外部可訪問 80 和 443 端口
  • caddycurl 在你的 PATH 中

在本教程中,請將 example.com 替換為你的實際域名。

將你的域名的 A/AAAA 記錄指向你的伺服器。你可以透過登錄你的 DNS 提供商並管理你的域名來完成此操作。

在繼續之前,請透過權威查詢驗證記錄是否正確。將 example.com 替換為你的域名,如果你使用的是 IPv6,請將 type=A 替換為 type=AAAA

curl "https://cloudflare-dns.com/dns-query?name=example.com&type=A" \
  -H "accept: application/dns-json"

同時確保你的伺服器可以從公共介面透過 80 和 443 端口從外部訪問。

我們所要做的就是啟動 Caddy,並在配置中包含你的域名。有幾種方法可以做到這一點。

Caddyfile

這是獲得 HTTPS 最常用的方式。

在一個名為 Caddyfile(無擴展名)的文件中,第一行寫上你的域名,例如:

example.com

respond "Hello, privacy!"

然後在同一目錄下執行:

caddy run

你會看到 Caddy 配置 TLS 證書並透過 HTTPS 提供你的網站服務。這之所以可行,是因為你在 Caddyfile 中的網站地址包含了一個域名。

file-server 命令

如果你只需要透過 HTTPS 提供靜態文件服務,請執行此命令(替換你的域名):

caddy file-server --domain example.com

你會看到 Caddy 配置 TLS 證書並透過 HTTPS 提供你的網站服務。

reverse-proxy 命令

如果你只需要一個簡單的 HTTPS 反向代理(作為 TLS 終端),請執行此命令(替換你的域名和實際後端地址):

caddy reverse-proxy --from example.com --to localhost:9000

你會看到 Caddy 配置 TLS 證書並透過 HTTPS 提供你的網站服務。

JSON 配置

一般的經驗法則是,任何 host matcher 都會觸發自動 HTTPS。

因此,如下所示的 JSON 配置將啟用準備好用於生產環境的 自動 HTTPS

{
	"apps": {
		"http": {
			"servers": {
				"hello": {
					"listen": [":443"],
					"routes": [
						{
							"match": [{
								"host": ["example.com"]
							}],
							"handle": [{
								"handler": "static_response",
								"body": "Hello, privacy!"
							}]
						}
					]
				}
			}
		}
	}
}