如何配置 squid 代理和 greasyspoon ICAP 服务器以访问 user_id

How do I configure squid proxy and greasyspoon ICAP server to access the user_id

我们正在使用 squid 代理和 GreasySpoon ICAP 服务器来修改用于开发目的的响应。我们需要允许不同的开发人员对响应进行不同的修改,因为他们正在处理与不同修改相关的事情。最初,当我们在 LAN 中安装此设置时,我们能够通过在 GreasySpoon 响应脚本中使用 user_id 脚本参数来适应这一点。此参数由开发者的本地 IP 填充,因此我们可以根据不同的 IP 进行设置。

当我们将设置移动到云端时,每个人都拥有用于 user_id 参数的共享 WAN IP,因此我们的方案失败了。

默认 GreasySpoon 脚本中的注释表明 user_id 可以是用户登录:

// user_id        :  (String)user id (login or user ip address)

我使用 squid 服务器配置了身份验证,但是 user_id 仍然设置为我们共享的 WAN IP。是否可以使用 squid 使用代理用户的用户名在 GreasySpoon 中填充此脚本参数?

GreasySpoon (1.0.10) 配置文件 service.properties 包含一个设置:SpoonScript.icapuserheader=x-authenticated-user。这是 GreasySpoon 检查以找到 user_id 的 header。如果未找到此值,则 GreasySpoon 回退到 IP 地址。因此,您必须将 squid 配置为在与属性文件中配置相同的 header 中发送经过身份验证的用户的用户名。

// in squid.conf:
icap_client_username_header x-authenticated-user