簡體   English   中英

自定義域的按需 TLS 和反向代理支持

[英]On Demand TLS and Reverse Proxy Support for Custom Domains

我今天遇到了一個情況。 請分享您的專業知識

我有一個項目(my-app.com),其中一個功能是生成一個由不同端點組成的狀態頁面。

當前工作流程

  1. 用戶登錄系統
  2. 用戶為他的一個站點(例如google)創建一個狀態頁面,並添加不同的端點和組件以包含在該頁面上。
  3. 系統為給定的狀態頁面生成一個鏈接。

例如。 my-app.com/status-page/google

  1. 但是用戶可能希望在他的自定義域中看到這個頁面。

例如。 status.google.com

  1. 由於這是一個自定義域,我們需要按需 TLS功能。 對於這個功能,我使用了Caddy並且工作正常。 Caddy 在我們的子域status.myserver.com上運行,用戶的自定義域status.myserver.com對我們的子域status.google.com有一個CNAME

  2. 除了按需 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM