Apache-2.2
向 ProxyPass 請求添加自定義標頭
我有一個簡單的 apache 虛擬主機:
<VirtualHost *:80> ServerName hello.local ProxyPass / http://localhost:8810/ ProxyPassReverse / http://localhost:8810/ </VirtualHost>
所有對 hello.local 的請求都被代理到
http://localhost:8810/
. 我想要做的是向 http 請求添加一個標頭,http://localhost:8810/
其中包含一個外部命令返回的值。就像是
Header set MyHeader ${/usr/bin/an_external_program}
有什麼辦法可以做到這一點?
好,我知道了。
首先,執行的腳本用於獲取要插入到標頭中的值。我將其創建為
/opt/apache/debug.sh
:#!/bin/bash #this script just loops forever and outputs a random string #every time it receives something on stdin while read do cat /dev/urandom|head -c12|base64 done
阿帕奇配置:
<VirtualHost *:80> ServerName light.nik RewriteEngine On RewriteMap doheader prg:/opt/apache/debug.sh RewriteRule (.*) - [E=customheader:${doheader:},P] RequestHeader set customheader %{customheader}e ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ </VirtualHost>
執行的後端服務
http://localhost:8080/
接收customheader
來自腳本的值。關於使用外部程序的 Apache 文件在這裡。