您可以為 [[Obsidian Publish 介紹|Obsidian Publish]] 網站設定自訂網域或子網域。 > [!warning] 警告 > 目前,我們僅支援使用以下方法設定自訂網域: > > - [[#使用 CloudFlare 設定]],採用 [Full 模式](https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/full/)。 > - [[#使用代理伺服器設定]] > > 我們目前尚無法代您佈建 SSL 憑證。 ## 使用 CloudFlare 設定 設定自訂網域或子網域最簡單的方式是建立 [CloudFlare](https://cloudflare.com) 帳戶,並讓 CloudFlare 管理您網域的 DNS。 以下步驟說明如何使用 CloudFlare 為您的 Obsidian Publish 網站設定自訂網域,無論是根網域(`mysite.com`)或子網域(`notes.mysite.com`)。 > [!important] 重要 > CloudFlare 是**唯一官方支援的供應商**,可用於設定自訂網域。使用以下說明搭配其他供應商很可能無法正常運作。 **CloudFlare:** 1. 在 Cloudflare 中開啟您要託管 Publish 網站的網域,例如 `mysite.com`,即使您想使用子網域如 `notes.mysite.com` 也是如此。 2. 前往 **DNS** 並點選 **Add Record**。 3. 選擇 **CNAME**。 4. 在 **name** 中,輸入您的網域或子網域,例如 `notes.mysite.com`。 5. 在 **target** 中,輸入 `publish-main.obsidian.md`。請勿在此值中包含您的個人子 URL。Obsidian Publish 會從您的設定中處理此項。 6. 確認 **proxy status** 已啟用。預設應為啟用狀態。 7. 前往 **SSL/TLS** 並將 SSL/TLS 加密模式設為「Full」以自動設定 SSL/TLS 憑證。 > [!note] 備註 > 若要將 `mysite.com` 和 `www.mysite.com` 同時重新導向至 Obsidian Publish,您需要建立一條 [Page Rule](https://support.cloudflare.com/hc/en-us/articles/200172336-Creating-Page-Rules),使用以下設定: > > - URL match:`www.mysite.com/*` > - Forward URL - 301 Permanent Redirect > - Redirect URL:`https://mysite.com/$1` > > 建立頁面規則後,為 `www.mysite.com` 建立 CNAME 記錄,方法與 `mysite.com` 相同。 **Obsidian:** 1. 在電腦上開啟 Obsidian。 2. 在左側的[[功能區選單|功能區]]中,點選**發佈變更** ![[lucide-send.svg#icon]]。 3. 在**發佈變更**下方,選擇**變更網站選項** ![[lucide-cog.svg#icon]]。 4. 在**自訂網域**旁邊,選擇**設定**。 5. 在**自訂網址**中,輸入您網域或子網域的 URL。請確保不要在自訂網址欄位中加入 `www.`。 > [!note] 備註 > 如果您的自訂網域設定陷入重新導向迴圈,很可能是因為 CloudFlare 中的加密模式被設為「Flexible」而非「Full」。 ## 使用代理伺服器設定 您也可以使用自己的網頁伺服器為自訂網域設定 SSL/TLS。 如果您已在網域或子網域下託管網站,也可以使用此選項,將網站設定為在特定 URL 路徑下載入您的 Obsidian Publish 網站,而非託管完整網站。 將該 URL 路徑下的所有請求代理至 `https://publish.obsidian.md/serve?url=mysite.com/my-notes/...`,並在 Obsidian 中將網站選項設定為相同的 URL 路徑,方法是將**自訂網址**設為 `mysite.com/my-notes`。 您也可以將 Obsidian Publish 設定為您擁有的網站的子 URL。例如 `https://mysite.com/my-notes/`。若要實現此目的,您必須託管自己的伺服器,並將所有請求代理至我們的伺服器 `https://publish.obsidian.md/`。 以下代理伺服器設定範例並非詳盡無遺,但提供了此實作的常見方法。 ### NGINX 在您的 NGINX 設定中,加入以下內容: ```nginx location /my-notes { proxy_pass https://publish.obsidian.md/serve?url=mysite.com/my-notes/; proxy_ssl_server_name on; proxy_set_header Host publish.obsidian.md; } ``` 部分使用者回報可能需要在 proxy pass 中加入 `$request_uri`: ```nginx location /my-notes { proxy_pass https://publish.obsidian.md/serve?url=mysite.com/my-notes$request_uri; proxy_ssl_server_name on; proxy_set_header Host publish.obsidian.md; } ``` ### Apache 在 `.htaccess` 中,加入以下內容: ```htaccess RewriteEngine on RewriteRule "^my-notes/(.*)quot; "https://publish.obsidian.md/serve?url=mysite.com/my-notes/$1" [L,P] ``` > [!note] 備註 > 必須啟用 `mod_rewrite`,您可能還需要設定 [SSLProxyEngine](https://stackoverflow.com/questions/40938148/reverse-proxy-for-external-url-apache) ### Netlify 在 `netlify.toml` 中,[設定重新導向](https://docs.netlify.com/routing/redirects/#syntax-for-the-netlify-configuration-file): ```plain [[redirects]] from = "https://mysite.com/my-notes/*" to = "https://publish.obsidian.md/serve?url=mysite.com/my-notes/:splat" status = 200 force = true ``` ### Vercel 在 `vercel.json` 中,[設定 rewrites](https://vercel.com/docs/configuration#project/rewrites): ```json { ... "rewrites": [ { "source": "/my-notes/", "destination": "https://publish.obsidian.md/serve?url=mysite.com/my-notes" }, { "source": "/my-notes/:path*", "destination": "https://publish.obsidian.md/serve?url=mysite.com/my-notes/:path*" } ] } ``` ### Caddy ```plain mysite.com { encode zstd gzip handle /my-notes* { reverse_proxy https://publish.obsidian.md { header_up Host {upstream_hostport} } rewrite * /serve?url=mysite.com{path} } } ``` ### Traefik 以下最小設定範例將 `mysite.com` 重新導向至 Obsidian Publish。 完整範例請參閱 [Traefik 文件](https://doc.traefik.io/traefik/routing/overview/)。 ```yaml http: routers: mysite: rule: Host(`mysite.com`) service: obsidian-publish middlewares: - "publish-headers" services: obsidian-publish: loadBalancer: servers: - url: https://publish.obsidian.md middlewares: publish-headers: headers: customRequestHeaders: Host: "publish.obsidian.md" x-obsidian-custom-domain: "mysite.com" ``` ### 支援的 HTTP X-Headers 如果您的代理服務不允許查詢路徑,您可以使用 `https://publish.obsidian.md/`,並將自訂標頭 `x-obsidian-custom-domain` 設為您的網站 URL `mysite.com/my-subpath`。 ## 將舊網站重新導向至自訂網域 如果您想將訪客從舊的 `publish.obsidian.md` 網站重新導向至新的自訂網域,請在設定自訂網域時啟用**重新導向至您的自訂網域**選項。 ## 疑難排解 設定自訂網域後,如果您之前曾透過 `https://publish.obsidian.md/slug` 連結造訪過網站,您可能需要清除瀏覽器快取,某些功能(如字型、圖表或密碼存取)才能正常運作。這是由於現代瀏覽器施加的跨網域安全限制所致。好消息是,如果您只讓訪客使用自訂網域,他們應該不會遇到此問題。