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


9

私は単純な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}

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


リクエストごとにこの外部プログラムを実行しますか?
sciurus 2014

はい。または、「サブリクエスト」:cgiスクリプトまたは類似の何かによって返される値でもかまいません。パフォーマンスへの影響を認識しています。
Simon

回答:


9

はい、分かりました。

まず、実行され、ヘッダーに挿入する値を取得するために使用されるスクリプトです。私はこれを次のように作成しました/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のドキュメントはこちらです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.