来自收到的nginx proxy_set_header的Apache Set Environment变量

时间:2017-05-09 12:04:30

标签: apache

假设我有一个nginx配置,如:

proxy_set_header ENVIRONMENT testing;  ## dynamically created based on a check
proxy_pass apache;

现在我希望apache接收标头ENVIRONMENT的内容(我认为apache将其重命名为HTTP_ENVIRONMENT)然后我想将其存储到名为$ENVIRONMENT的环境变量中apache用户www-data,以便我的perl应用程序可以读取它。

我试过这样:

RewriteRule .* - [E=ENVIRONMENT:%{HTTP_ENVIRONMENT}]
SetEnv ENVIRONMENT "%{ENVIRONMENT}e"
SetEnvIf HTTP_ENVIRONMENT "(.*)" ENVIRONMENT=$1

从我通过apache帮助页面或其他serverfault-questions找到的内容。 SetEnv似乎无法使用另一个的内容实际设置环境变量。还有其他解决办法吗?

编辑:现在这是我目前的尝试:

RewriteRule .* - [E=ENVIRONMENT:%{HTTP:ENVIRONMENT}]
SetEnv ENVIRONMENT "%{ENVIRONMENT}"
PassEnv ENVIRONMENT
Header set X-ENVIRONMENT "%{ENVIRONMENT}e"

1 个答案:

答案 0 :(得分:0)

以下是它的工作原理:

nginx.conf:

proxy_set_header ENVIRONMENT "test";

阿帕奇:

RewriteEngine On
RewriteRule .* - [E=ENVIRONMENT:%{HTTP:ENVIRONMENT}]

检查回来:

阿帕奇:

Header set ENVIRONMENT "%{ENVIRONMENT}e"

我的错,我以为我可以在用户{www}数据系统上看到env的环境变量,但环境变量无论如何都在apache线程中,并且在系统上不可见。< / p>