ProxyPass 요청에 사용자 정의 헤더 추가


9

간단한 아파치 호스트가 있습니다.

<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}

이것을 달성 할 수있는 방법이 있습니까?


각 요청 중에이 외부 프로그램을 실행 하시겠습니까?
sciurus

예. 또는 "subrequest"일 수도 있습니다. 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

아파치 설정 :

<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>

실행중인 백엔드 서비스 는 스크립트에서 with 값 을 http://localhost:8080/받습니다 customheader.

외부 프로그램 사용에 관한 Apache 문서는 여기에 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.