假设我有一个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"
答案 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>