Apache-2.2

向 ProxyPass 請求添加自定義標頭

  • March 6, 2017

我有一個簡單的 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 文件在這裡

引用自:https://serverfault.com/questions/592260