apache:传递环境变量

apache:传递环境变量

我有一个重写规则,用于从远程 URL(在我控制下的不同服务器上)获取一些数据,如下所示:

RewriteRule ^/.+/remote_dir/(.*) http://11.22.33.44/remote_dir/$1 [P]

远程服务器有 htpasswd 身份验证,需要绕过此特定请求。我无法使用允许来自 ip,因为记录的 ip 是网关的(这将允许无密码访问网关后面的所有机器)。

因此我想到通过这个请求传递环境变量,并根据它的值绕过身份验证(11.22.33.44 也在 apache 上)。

但我似乎找不到这个问题的解决方案。我知道还有其他解决方案,比如在两台服务器上使用通用 ldap auth/或相同的用户/密码,但我不想使用它,因为 11.22.33.44 位于公共 IP(云基础设施)上。

请帮我解决这个问题。

答案1

您无法通过 HTTP 传递环境变量。您是否尝试过使用 URL 中的身份验证令牌进行代理:

RewriteRule ^/.+/remote_dir/(.*) http://user:[email protected]/remote_dir/$1 [P]

或者,您可以将身份验证令牌附加到查询字符串,例如:

RewriteRule ^/.+/remote_dir/(.*\?.*)$ \
     http://11.22.33.44/remote_dir/$1;auth=s3cr3t [P,S=1]
RewriteRule ^/.+/remote_dir/(.*) \
     http://11.22.33.44/remote_dir/$1?auth=s3cr3t [P]

然而,HTTP 身份验证(即使是摘要模式)也并不完全安全。

相关内容