[英]On Demand TLS and Reverse Proxy Support for Custom Domains
我今天遇到了一個情況。 請分享您的專業知識
我有一個項目(my-app.com),其中一個功能是生成一個由不同端點組成的狀態頁面。
當前工作流程
例如。
my-app.com/status-page/google
例如。
status.google.com
由於這是一個自定義域,我們需要按需 TLS功能。 對於這個功能,我使用了Caddy並且工作正常。 Caddy 在我們的子域status.myserver.com
上運行,用戶的自定義域status.myserver.com
對我們的子域status.google.com
有一個CNAME
除了按需 TLS,我還需要進行反向代理,如下所示。
例如。
status.google.com ->(CNAME)-> status.myserver.com ->(REVERSE_PROXY)-> my-app.com/status-page/google
但是 Caddy 僅支持反向代理的協議、主機和端口格式,例如my-app.com
但我的要求是支持自定義頁面my-app.com/status-page/google
的反向代理。 我怎樣才能做到這一點? 有沒有更好的 Caddy 替代品或 Caddy 的解決方法?
你是對的,因為你不能在反向代理上游 URL 中使用路徑,所以在啟動反向代理之前,你必須先重寫請求以包含路徑。
此外,上游地址不能包含路徑或查詢字符串,因為這意味着在代理時同時重寫請求,這種行為沒有定義或支持。 如果需要,可以使用rewrite指令。
因此,您應該能夠使用內部球童rewrite
將/status-page/google
路徑添加到每個請求。 然后您可以簡單地使用my-app.com
作為您的 Caddy 反向代理上游。 這可能看起來像這樣:
https:// {
rewrite * /status-page/google{path}?{query}
reverse_proxy http://my-app.com
}
您可以在此處找到有關所有可能的 Caddy reverse_proxy
上游地址的更多信息: https://caddyserver.com/docs/caddyfile/directives/reverse_proxy#upstream-addresses
但是,由於您可能無法在 Caddyfile 中硬編碼狀態頁的名稱 ( /status-page/google
),因此您可以設置一個腳本(例如/status-page
)來查看請求URL,在您的數據庫中查找域(例如status.google.com
),並自動輸出正確的狀態頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.