Apache는 다른 전진 프록시를 사용하여 요청을 다시 작성합니다
-
20-09-2019 - |
문제
요청 헤더를 기반으로 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
도움이되기를 바랍니다. :)
제휴하지 않습니다 StackOverflow