web-dev-qa-db-ja.com

ProxyPassリクエストにカスタムヘッダーを追加する

私は単純なApache vhostを持っています:

<VirtualHost *:80>
  ServerName hello.local

  ProxyPass / http://localhost:8810/
  ProxyPassReverse / http://localhost:8810/
</VirtualHost>

Hello.localへのすべてのリクエストはhttp://localhost:8810/にプロキシされます。私がやりたいことは、外部コマンドから返された値を使用して、http://localhost:8810/に移動するHTTPリクエストにヘッダーを追加することです。何かのようなもの

Header set MyHeader ${/usr/bin/an_external_program}

これを達成する方法はありますか?

9
Simon

はい、分かりました。

まず、実行され、ヘッダーに挿入する値を取得するために使用されるスクリプトです。これを/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

Apache設定:

<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のドキュメントは here です。

9
Simon