跳转到主要内容

Gopher 支持

KeyDB 包含 Gopher 协议的实现,该协议在 RFC 1436 中有详细规定。

Gopher 协议在 90 年代末非常流行。它是 Web 的一种替代方案,其服务器端和客户端的实现都非常简单,以至于 KeyDB 服务器仅用 100 行代码就实现了对此协议的支持。

如今,Gopher 有什么用呢?其实,Gopher 从未真正消亡,最近有一场运动旨在复兴 Gopher 那种由纯文本文档组成的、更具层次感的内容。有些人想要一个更简单的互联网,另一些人则认为主流互联网变得过于受控,为那些想要呼吸一点新鲜空气的人们创造一个替代空间是件很酷的事。

工作原理#

KeyDB 的 Gopher 支持使用了 KeyDB 的内联协议,特别是两种原本非法的内联请求:空请求或任何以“/”开头的请求(因为没有 KeyDB 命令是以斜杠开头的)。正常的 RESP2/RESP3 请求完全不受 Gopher 协议实现的影响,并会像往常一样被处理。

当 Gopher 功能启用时,如果您与 KeyDB 建立连接并发送一个像“/foo”这样的字符串,如果存在一个名为“/foo”的键,它将通过 Gopher 协议被提供。

安全警告#

如果您计划将 KeyDB 部署在互联网上,并使用公共可访问的地址来提供 Gopher 页面,请务必为实例设置密码。一旦设置了密码

  1. Gopher 服务器(启用时,非默认)将通过 Gopher 提供内容。
  2. 但是,在客户端认证之前,其他命令将无法被调用。

因此,请使用 requirepass 选项来保护您的实例。

要启用 Gopher 支持,请使用以下配置行。

gopher-enabled yes

访问非字符串类型或不存在的键将产生 Gopher 协议格式的错误。