通过Kubernetes HAProxy Ingress关闭站点搜索索引

Kubernetes中,Ingress资源常作为流量控制器使用,为集群内的服务提供外部访问。Ingress对于将传入流量路由到您的服务是必不可少的;然而,可能存在一些场景,您希望阻止搜索引擎索引您的服务内容:这可能是一个开发环境或其他内容。

本文将引导您使用robots.txt文件在Kubernetes Ingress上阻止网站索引,防止搜索引擎机器人爬取和索引您的内容。

先决条件

为了继续教程,您应该对Kubernetes基本对象、Ingress资源以及官方HAProxy ingress controller有一个基本的了解。您还需要访问Kubernetes集群以及进行配置更改所需的必要权限。

请注意,为了本文的目的,我假设HAProxy ingress controller被设置为默认控制器。否则,如果您没有将HAProxy设置为默认控制器,您必须在所有Ingress代码示例中添加ingressClassName选项。

步骤1:创建一个Ingress Kubernetes资源

在旅程的第一部分,我们将设置一个小的Ingress资源,以将我们的服务暴露在Kubernetes集群之外。请注意:到目前为止,所有的网络爬虫都将能够访问该服务。要应用下面的代码,请使用命令kubectl apply -f ingress.yaml

YAML

 

第2步:修改Ingress配置

robots.txt文件用于控制搜索引擎如何索引文档。它指定的文件说明了搜索引擎爬虫可以访问您网站上的哪些URL。最基本的限制访问Web服务的文件如下所示:

Plain Text

 

HAProxy不需要您将此文件添加到您的Web服务器或网站中。这可以通过以下配置实现,该配置应添加到特定服务器组的backend部分:

Plain Text

 

K8S注解调节了单个ingress资源的所有HAProxy前端/后端配置操作。有关HAProxy注解的完整列表,请在GitHub上的官方文档中查看。

在我们的案例中,我们需要使用haproxy.org/backend-config-snippet并附上阻止索引的HAProxy片段。为此,请编辑并打开您的Ingress资源YAML文件,并在元数据部分添加以下注解:

YAML

 

第3步:应用配置更改

在更改了 Ingress YAML 文件后,请保存并使用 kubectl 命令将其应用到 Kubernetes 集群中:kubectl apply -f ingress.yaml

Ingress 控制器将检测到这些更改,并相应地更新配置。

第 4 步:验证配置

检查生成的 robots.txt 文件,以确认阻止索引的功能是否正常工作。Ingress 控制器会根据您提供的注解生成此文件。

获取与您的 Ingress 资源相关联的外部 IP 或域名,并在 URL 后面添加 /robots.txt。例如:

Plain Text

 

正如我们所看到的,回答中包含了一个 robots.txt 文件,它阻止了任何搜索引擎的索引。

第 5 步:测试索引阻止

为了验证搜索引擎没有索引您的网站,您可以在流行搜索引擎上运行针对您网站的搜索。请注意,搜索结果有时需要一些时间来反映更改,因此索引状态可能不会立即完全更新。

结论

注解使得在使用HAProxy Kubernetes Ingress时轻松避免搜索引擎索引。通过向您的Ingress资源添加适当的注解,您可以禁止搜索引擎机器人爬取和索引您网站的内容。类似的方法也可以用于其他ingress控制器,如Nginx、Traefic等。类似的注解也可以用于K8S网关API资源,这些资源正在逐步取代Ingress。

作为最后的说明,robots.txt是网站创作者长期以来指定其网站是否应被各种机器人爬取的公认方式。然而,事实证明,来自大型语言模型(LLM)公司的AI爬虫经常忽略robots.txt的内容,并无论如何都会爬取您的网站。为了避免这种情况,请使用密码安全、noindex或企业负载均衡器功能,如HAProxy AI爬虫,后者也可以作为K8S注解配置。

Source:
https://dzone.com/articles/close-site-search-indexing-via-kubernetes-haproxy