> ## 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 添加文件，同时确保集群的内部地址无法被访问。

“来自外部 URL”的文件（以及 [Overleaf 导入 API](https://ayakaleaf-pro.mintlify.site/zh-CN/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-CN/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 上会阻止哪些地址

该代理会拒绝所有非公网单播地址：环回地址、链路本地地址（包括云元数据地址 `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 的 Service 网络 `10.96.0.0/12`，在未设置任何 `OVERLEAF_LINKED_URL_BLOCKED_NETWORKS` 的情况下，该代理拒绝了从 Service 的 ClusterIP、集群内名称 `redis`、`garage` 和 `overleaf-1.overleaf-hl.overleaf.svc.cluster.local` 以及节点地址进行的下载。我们的端到端测试还验证了通过导入 API 拒绝环回地址和云元数据地址，以及 AI 助手只读取 `OVERLEAF_LINKED_URL_ALLOWED_RESOURCES` 所允许的页面，这些测试均已通过。


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