客户端可以用一个账号向 Apache 正向代理完成认证,而 Apache 用另一个账号向父代理完成认证:

client ── client account ── Apache ── parent account ── parent proxy

在 httpd 2.4.59 或更高版本中,要为父代理使用固定账号,ProxyRemote 接受第三个参数:

ProxyRemote "*" "http://parent.example:3128" "parent-user:replace_with_private_password"

这是对现有受访问控制的正向代理配置的补充,例如一个同时要求 客户端 IP 和代理登录 的私有监听器。该账号属于所选的父代理。请保护包含它的配置,并选择部署所需的匹配范围。

Apache 会预先发送这些 Basic 凭据,而不是先等待质询。因此父连接所使用的传输方式和账号策略很重要;网站之后的 HTTPS 会话本身并不保护通往父代理的明文 HTTP 跳转。

何时应继续沿用同一个入站账号

通常 Apache 会消耗发给它自己的代理认证。而 proxy-chain-auth 环境设置则允许把客户端的代理凭据转发给下一个代理:

SetEnv proxy-chain-auth On

这只适用于有意共享的认证链。它会把入站账号材料继续传递下去,而不会另外编造一套父代理用户名和密码。

使用 ProxyRemote 的显式凭据参数时,proxy-chain-auth 不起作用。应当有意识地选择凭据来源,而不是把两项设置叠在一起、寄望于选中那个能用的密码。

这些机制认证的是代理跳转。目标网站的 Authorization 头仍然是另一套交换。

相关文章