> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 外部 URL

> 在 Kubernetes 部署中讓使用者從外部 URL 新增檔案，同時防止叢集的內部位址遭到存取。

「From External URL」檔案（以及 [Import API](https://ayakaleaf-pro.mintlify.site/zh-TW/on-premises/configuration/kubernetes/integrations/overleaf-import-api.md) 與 AI 助理的 `web_fetch` 所下載的檔案）由每個 Ayakaleaf Pro pod 內的 **linked-url-proxy** 服務擷取。它會拒絕非公開的位址，因此使用者無法透過它讀取內部服務。此功能及其設定請參閱[外部 URL](https://ayakaleaf-pro.mintlify.site/zh-TW/on-premises/configuration/overleaf-toolkit/external-url.md)。

| | |
| - | - |
| 服務 | linked-url-proxy（每個 pod 中的 `127.0.0.1:3066`）；當 `url` 包含在 `ENABLED_LINKED_FILE_TYPES` 中時，web 會顯示此選單 |
| Pod → 外部 | 使用者提供的 URL，任何連接埠皆可，直接連線或透過 `OVERLEAF_LINKED_URL_OUTBOUND_PROXY` |
| 狀態 | 無 |
| 定期工作 | 無：檔案只會在使用者要求時重新整理 |

### 設定

```yaml title="30-config.yaml (additions)" wrap theme={null}
  ENABLED_LINKED_FILE_TYPES: project_file,project_output_file,url
  # Public addresses of your nodes and load balancer, see below
  OVERLEAF_LINKED_URL_BLOCKED_NETWORKS: 203.0.113.0/24 198.51.100.7/32
  # optional
  # OVERLEAF_LINKED_URL_ALLOWED_RESOURCES: ^https?://www\.example\.com/public/
  # OVERLEAF_LINKED_URL_OUTBOUND_PROXY: http://proxy.example.com:3128
```

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
```

### 在 Kubernetes 上會封鎖哪些位址

此代理會拒絕所有非公開單點傳播位址的位址：loopback、link-local（包括雲端中繼資料位址 `169.254.169.254`）、私有範圍 `10.0.0.0/8`、`172.16.0.0/12` 與 `192.168.0.0/16`、電信等級 NAT 範圍 `100.64.0.0/10`，以及它們對應的 IPv6 位址。因此，位於這些範圍內的 Pod 與 Service 網路（這是 kubeadm、flannel、Calico 與大多數託管叢集的預設值）無需任何設定即會被封鎖，解析至這些位址的叢集內名稱（例如 `redis` 或 `git-bridge`）也同樣會被封鎖。

公開位址則是允許的。若您的節點或負載平衡器有公開位址，請將它們加入 `OVERLEAF_LINKED_URL_BLOCKED_NETWORKS`（以空格或逗號分隔），讓使用者無法透過這些位址擷取 NodePort 或狀態頁面。

設定 `OVERLEAF_LINKED_URL_OUTBOUND_PROXY` 後，主機名稱會由該代理解析，因此只有包含 IP 位址的 URL 會被檢查：該代理本身必須封鎖您的內部網路。

### 多個副本

不需要額外處理：每個 pod 都使用自己的 linked-url-proxy 與相同的設定進行擷取。

### 在 Kubernetes 上的測試

在 Kubernetes 1.37 上，以三個副本、flannel 的 pod 網路 `10.244.0.0/16` 與 kubeadm 的服務網路 `10.96.0.0/12` 進行測試，在未設定任何 `OVERLEAF_LINKED_URL_BLOCKED_NETWORKS` 的情況下，此代理拒絕了從 Service 的 ClusterIP、從叢集內名稱 `redis`、`garage` 與 `overleaf-1.overleaf-hl.overleaf.svc.cluster.local`，以及從節點位址進行的下載。我們的端對端測試也通過了透過 Import API 拒絕 loopback 與雲端中繼資料位址的案例，以及 AI 助理只讀取 `OVERLEAF_LINKED_URL_ALLOWED_RESOURCES` 所允許之頁面的案例。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.