Apache Mod_proxy의 URL을 제외하는 방법?


23

우리는로드 밸런서로 mod_proxy 모듈을 사용하여 구성된 백엔드로 2 개의 Apache 서버를 프론트 엔드로, 4 개의 tomcat 서버를 가지고 있습니다. 이제 mod_proxy로드 밸런서에서 단일 Tomcat URL을 제외하려고합니다. 제외 할 방법이나 규칙이 있습니까?

프록시 밸런서 설정 :

<Proxy balancer://backend-cluster1>
   BalancerMember http://10.0.0.1:8080 loadfactor=1 route=test1 retry=10
   BalancerMember http://10.0.0.2:8080 loadfactor=1 route=test2 retry=10
</Proxy>

답변:


38

샘플이 누락 된 전체 ProxyPass 문 앞에 느낌표 (!)를 사용하여 mod_proxy에서 경로를 제외합니다 ProxyPass /path balancer://backend-cluster1. 따라서 경로를 제외하려면 다음을 추가하십시오.

ProxyPass /my/excluded/path !

전에

ProxyPass /my balancer://backend-cluster1

그러나 URL은 proxyBalancer 뒤에 액세스 할 수 있습니다
Mughil

감사합니다 fuzzyfelt, 프록시 밸런서를 구성한 경우 URL을 제외하는 방법을 묻습니다. 질문에 프록시 구성을 포함 시켰습니다
Mughil

1
업데이트 된 답변을 참조하십시오. proxypass에 대한 경로를 정의하기 전에 제외를 추가하십시오.
Alastair McCormack

2
이 답변을 사용하면 ProxyPass를 사용하여 대화 서버를 표시 할 때 LetsEncrypt가 가상 호스트의 기본 .well-known 폴더 위치로 허용되도록 큰 도움이되었습니다. 다른 지시문 앞에 추가하십시오 : ProxyPass /.well-known!
교수 Falken

2

Alastair McCormack의 답변 외에도 :를 사용하는 경우 <Location>이전 대신 다음을 제외해야합니다.

<Location /my/>
    ProxyPass balancer://backend-cluster1
</Location>

<Location /my/excluded/path/>
    ProxyPass !
</Location>

-2

제외하려는 URL에 액세스하려고 할 때 404 오류를 발생시키는 프록시 지시문 위에 다시 쓸 수 있습니다. rewrite_module을 활성화해야합니다.

<Location ~ ^/urltoblock($|/)>
   RewriteEngine On 
   RewriteRule .* - [L,R=404]
</Location>

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