繁体   English   中英

在Apache配置中有条件地设置环境变量

[英]Conditionally set environment variable in Apache config

我正试图为Apache使用的单点登录模块做一个后退。 通常,当启用此模块时,一旦模块将HTTP_LOGIN设置为用户名,登录后。 但我想以这样的方式配置我的网络服务器,以便我有一个后备选项。 我的想法是在Apache配置中设置一个环境变量,指示哪个SSO解决方案当前处于活动状态。 我检查了这个,它按预期工作。 Web应用程序查看新的环境变量。

但我也想强制HTTP_LOGIN到预定值(“readonly”)。 无条件地设置HTTP_LOGIN ,这可以按预期工作,但是只要SSO_SOLUTION设置为none ,我HTTP_LOGIN有条件地设置SSO_SOLUTION

SetEnv SSO_SOLUTION none
SetEnvIf SSO_SOLUTION ^none$ HTTP_LOGIN=readonly

这似乎不起作用,但我从Apache文档中了解到它应该。 我是否误解了文档和/或我在这里错误配置了什么?

mod_setenvif是在配置中配置的(但我可以从正在运行的网络服务器查询,只是为了仔细检查?)。 日志中没有意外错误。

平台:RHEL 6.4

从源资源中搜索您的问题,我发现了一个由Turboflash完成的优秀的Env测试矩阵

以下是完整的测试矩阵帖子: http//turboflash.wordpress.com/2010/05/27/apache-environment-variables-visibility-with-setenv-setenvif-and-rewriterule-directives/

对你来说真正有趣的事情是A_2环境变量的结果是空的。

在最后的矩阵他说, 环境变量设置由Setenv中不具备SetenvIf 但是,通过SetenvIf (B_2)设置的环境变量不是这种情况。

所以,你应该尽量使用SetenvIf ,而不是Setenv与像一个总是匹配规则Remote_Addr "^"是这样的:

SetEnvIf Remote_Addr "^" SSO_SOLUTION=none
SetEnvIf SSO_SOLUTION ^none$ HTTP_LOGIN=readonly

并且还在设置SSO_SOLUTION时使用的其他部分上使用SetenvIf(并且不要使用mod_rewrite更改此env值,请检查矩阵)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM