문제

요청 헤더를 기반으로 Apache의 요청을 다른 포워드 프록시로 전달하고 싶습니다. 최선의 방법은 mod_rewrite를 사용하는 것이지만 동일한 Apache 구성에 정의 된 역 프록시 만 사용할 수 있다고 생각합니다.

또한 mod_proxy의 proxyremote 속성을 확인했지만 조건에 따라 요청 URL을 기준으로 사용할 수 없습니다.

다음과 같은 것이 필요합니다.

X-Custom-Header가 value-1-> 전달 요청 프록시 P1 value-2-> 전달 요청 프록시 P2

등.

이런 식으로 만들 수있는 사람이 있습니까?

고마워요, 알린

도움이 되었습니까?

해결책

나는 해결책을 찾았습니다. 정말 우아하지 않습니다. 두 번째 서버에도 적응이 포함됩니다.

비슷한 문제가있는 프로젝트에서 파생되지만 서버는 "완전히"(데이터베이스 리소스를 사용하는 사용자 정의 스크립트로 선택)가 필요했습니다.

적어도 작동해야합니다 (다시 작성하여 URL을 실행하여 수정하여 사용 헤더를 사용하도록 조정했습니다. RewriteCond).

# example for server number "5" in your remote proxy network
RewriteCond %{HTTP:X-CUSTOM-HEADER} 1
RewriteRule http://([a-z0-9\.]+)/(.*) http://$1.5.server.yourdomain.com$1 [P] 
ProxyRemoteMatch .*\.5\.server\.yourdomain\.com.* http://5.server.yourdomain.com:80

기본적으로 URL을 조정하여 두 번째 서버의 하위 도메인이면 다시 제거합니다.
이 부분은 두 번째 (원격 프록시 서버)에 있습니다.

<ProxyMatch "http://.*\.[0-9]+\.server\.yourdomain\.com/.*">
    RewriteEngine on
    RewriteRule (proxy:http[s]?://.+)\.[0-9]+\.server\.premiumize\.me(.+) $1$2 
    ... your code ...
</ProxyMatch>

다른 팁

이 시도:

# Prevents Apache from functioning as a forward proxy server (where you don't want)
ProxyRequests Off
# Preserve Host in http protocol on destination server
ProxyPreserveHost On
<Proxy *>
   Order deny,allow
   Allow from all
</Proxy>
# enable rewrite engine
RewriteEngine On 
# check header
RewriteCond %{HTTP:X-CUSTOM-HEADER} 1
# execute forward proxy
RewriteRule (.*) http://server1/$1 [P,L,QSA]

# check header
RewriteCond %{HTTP:X-CUSTOM-HEADER} 2
# execute forward proxy
RewriteRule (.*) http://server2/$1 [P,L,QSA]

%{http : header}로 검증 된 Rewritecond 지시문을 사용하여이를 달성 할 수 있어야합니다.

다음을 시도하십시오.

RewriteEngine On 

RewriteCond %{HTTP:X-CUSTOM-HEADER} 1
RewriteRule (.*) http://p1.example.com$1 [P] 
ProxyPassReverse / http://p1.example.com

RewriteCond %{HTTP:X-CUSTOM-HEADER} 2
RewriteRule (.*) http://p2.example.com$1 [P] 
ProxyPassReverse / http://p2.example.com

도움이되기를 바랍니다. :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top