在 Kubernetes 中,Ingress 資源常被用作交通控制器,為集群內的服务提供外部訪問。Ingress 是路由進入的交通到您的服務的重要因素;然而,有時候您可能會希望阻止搜索引擎索引您的服務內容:這可能是一個開發環境或其他东西。
本篇文章將引导您通過使用robots.txt文件在Kubernetes Ingress上阻止網站索引,防止搜索引擎爬蟲索引您的內容。
前提
要進行本教程,您應該對Kubernetes基本物件、Ingress資源和官方HAProxy ingress controller有基本的了解。您還需要訪問Kubernetes集群以及進行配置更改所需的必要权限。
請注意,為了本文的目的,我假設HAProxy ingress controller被設定為默認控制器。否则,如果您沒有將HAProxy設定為默認控制器,您必須將ingressClassName
選項添加到所有Ingress代碼示例中。
步驟 1: 創建一個Ingress Kubernetes資源
在我們旅程的第一部分,我們將建立一個小型Ingress資源以將我們的服務暴露於Kubernetes集群之外。注意:目前,所有网络爬蟲將能夠訪問此服務。要套用下面的代碼,請使用命令kubectl apply -f ingress.yaml
。
# file: ingress.yaml
---
apiVersion networking.k8s.io/v1
kind Ingress
metadata
name dzone-close-site-indexing-haproxy-example
annotations
cert-manager.io/cluster-issuer letsencrypt-prod
spec
rules
host dzone-close-site-indexing-haproxy-example.referrs.me
http
paths
path /
pathType Prefix
backend
service
name dzone-close-site-indexing-haproxy-example-service
port
number80
tls
hosts
dzone-close-site-indexing-haproxy-example.referrs.me
secretName dzone-close-site-indexing-haproxy-example
步驟2:修改Ingress配置
robots.txt文件用來控制在網站上搜索引擎索引文件的方式。它的文件指明了搜索引擎爬蟲可以在您的網站上訪問哪些URL。限制訪問网络服務的最基本的文件看起來像這樣:
User-agent: *
Disallow: /
HAProxy不需要您將此文件添加到您的web服務器或網站。這可以通過以下配置實現,這應該添加到特定服務器組的後端部分:
acl robots_path path_beg /robots.txt
http-request return status 200 content-type "text/plain" lf-string "User-agent: *\nDisallow: /\n" if robots_path
K8S注解規定了對单个ingress資源的HAProxy前端/後端配置的所有操作。HAProxy注解的完整列表可以在GitHub上的官方文檔中找到。
在我們的案例中,我們需要使用haproxy.org/backend-config-snippet
並加入HAProxy片段來阻止所有索引。要做到這點,請編輯、打開您的Ingress資源YAML文件,並將以下注解添加到元數據部分:
#file: ingress.yaml
---
apiVersion networking.k8s.io/v1
kind Ingress
metadata
name dzone-avoid-indexing-haproxy-example
annotations
…
haproxy.org/backend-config-snippet
acl robots_path path_beg /robots.txt
http-request return status 200 content-type "text/plain" lf-string "User-agent: *\nDisallow: /\n" if robots_path
spec
...
步驟3:應用配置更改
在更改 Ingress YAML 文件後,請將它保存並使用 kubectl 命令 Apply 到 Kubernetes 簇集: kubectl apply -f ingress.yaml
。
Ingress 控制員將侦測到這些更改並相對應更新配置。
步驟 4: 驗證配置
查看生成的 robots.txt 文件以確認阻止索引功能是否正常運作。Ingress 控制員會根據您提供的注解來生成此文件。
獲取與您的 Ingress 資源相關的外部 IP 或網域名稱,並將 /robots.txt 添加到 URL。示例:
$ curl dzone-close-site-indexing-haproxy-example.referrs.me/robots.txt
User-agent: *
Disallow: /
如我們所見,回答中包含了一個 robots.txt
文件,該文件阻止任何搜寻索引。
步驟 5: 測試索引阻止
為了驗證搜寻引擎是否正在索引您的網站,您可以 popular search engines 上運行一個针对您網站的搜寻。請記住,搜寻結果可能需要一些時間來反映更改,因此索引狀態可能不會立即完全更新。
結論
註解讓您在使用HAProxy Kubernetes Ingress時容易避免搜索引擎索引。通過向您的Ingress資源添加適當的註解,您可以阻止搜索引擎爬蟲爬取和索引您網站的內容。相同的方法也可以用於其他ingress controller,如Nginx、Traefic等。同樣的註解也可用於K8S Gateway API資源,這些資源正在積極取代Ingresses。
作為最後的註釋,robots.txt是網站創建者指定了否定了 various bots是否應該爬取它們的網站的一个历史悠久的方法。然而,結果顯示,大型語言模型(LLM)公司的人工智能爬蟲經常忽視robots.txt的內容,並照樣爬取您的網站。为了避免這種情況,請使用密碼安全性、noindex,或企業負載平衡器功能如HAProxy AI爬蟲,這也可以配置為K8S註解。
Source:
https://dzone.com/articles/close-site-search-indexing-via-kubernetes-haproxy