간단한 아파치 호스트가 있습니다.
<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>
실행중인 백엔드 서비스 는 스크립트에서 with 값 을 http://localhost:8080/
받습니다 customheader
.
외부 프로그램 사용에 관한 Apache 문서는 여기에 있습니다 .