当 HTTP 基本身份验证正确时,我想将 apache 设置的环境变量 REMOTE_USER 传递给后端。这也会为后端服务器提供身份验证。
这是我的 apache2 配置文件:
<Directory />
AuthType basic
AuthUserFile $my_file
require valid-user
RewriteEngine on
RewriteCond %{REMOTE_USER} (.+)
RequestHeader set X-Forwarded-User %{REMOTE_USER}e
</Directory>
apache2 的身份验证进展顺利,因为我被正确地重定向到后端服务器,但是,后端服务器没有收到 REMOTE_USER,因为 X-Forwarded-User 变量没有出现在 tcpdump 跟踪中。
我可能忘记/错误配置了什么,导致这个 REMOTE_USER 变量无法作为 X-Forwarded-User 转发到后端?
答案1
REMOTE_USER 实际上不是 Apache 内部的环境变量,而是由 Apache 在运行 CGI 或 PHP 处理程序等时设置的。
实际值嵌入在 Apache 的一个结构中。请参阅Apache 环境变量文档
也许您需要以 ENV: 作为前缀。
<Directory />
AuthType basic
AuthUserFile $my_file
require valid-user
RewriteEngine on
RewriteCond %{ENV:REMOTE_USER} (.+)
RequestHeader set X-Forwarded-User %{ENV:REMOTE_USER}e
</Directory>