如何在 Apache 中将标头转换为主机名?

如何在 Apache 中将标头转换为主机名?

基本上我想做与这个问题相反的事情:在 Apache 中将机器主机名作为标头发送

请求中的标头(例如“OIDC_CLAIM_nickname”)包含主机名。我想将请求代理到 hostname.somedomain.com

我该怎么做呢?

编辑:

这是我尝试过的:

LogFormat "%{OIDC_CLAIM_nickname}i"

RewriteEngine on
RewriteMap lowercase int:tolower

RewriteRule ^ - [E=NICK_NAME:${lowercase:%{OIDC_CLAIM_nickname}}]

ProxyPassInterpolateEnv On

<Location "/">
   AuthType openid-connect
   Require valid-user
   ProxyPass http://${NICK_NAME}.somedomain.com/ interpolate
   ProxyPassReverse http://${NICK_NAME}.somedomain.com/ interpolate
</Location>

但它不起作用。在访问日志中,我看到了 OIDC_CLAIM_nickname 标头值,但在错误日志中,我看到 Apache 正在尝试解析“.somedomain.com”,即变量名称为空。

答案1

您需要使用%{HTTP:OIDC_CLAIM_nickname}来引用 HTTP 标头,而不仅仅是%{OIDC_CLAIM_nickname}

并且您不需要使用小写,主机名不区分大小写。

相关内容