728x90
출처 : https://eng-nate.tistory.com/6?category=1129748
Apache의 mod_proxy 설정
Apache의 mod_proxy 모듈을 사용해 back단으로 http call을 호출할 수 있다. 주로 WAS와 연동할 때 사용하며 그 외에도 proxy서버로 Apache를 구성하는 경우에도 사용한다. 해당 포스팅에서는 mod_proxy를 사용
eng-nate.tistory.com
1. request를 단순하게 back 단으로 전달하는 proxy 설정
<VirtualHost *:7777>
#ServerName app.example.com
<Location />
Require all granted
</Location>
ProxyRequests off
ProxyPreserveHost On
ProxyPass / http://192.168.56.101:8080/
ProxyPassReverse / http://192.168.56.101:8080/
DocumentRoot /sw/web/jbcs-httpd24-2.4/httpd/docroot
</VirtualHost>
2. 다수의 back 단으로 로드밸런싱 하는 형태
<VirtualHost *:7777>
#ServerName app.example.com
<Location />
Require all granted
</Location>
<Proxy balancer://cluster>
BalancerMember http://192.168.56.101:8080/
BalancerMember http://192.168.56.102:8080/
</Proxy>
ProxyRequests off
ProxyPreserveHost On
ProxyPass / balancer://cluster/
ProxyPassReverse / balancer://cluster/
DocumentRoot /sw/web/jbcs-httpd24-2.4/httpd/docroot
</VirtualHost>
3. Sticky Session이 필요한 경우로, sticky session을 대신해 cookie 값에 RouteID 값을 넣어 stickyness 하게 동작한다.
<VirtualHost *:7777>
#ServerName app.example.com
<Location />
Require all granted
</Location>
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://cluster>
BalancerMember http://192.168.56.101:8080/ route=server1_instance1
BalancerMember http://192.168.56.102:8080/ route=server2_instance1
ProxySet stickysession=ROUTEID
</Proxy>
ProxyRequests off
ProxyPreserveHost On
ProxyPass / balancer://cluster/
ProxyPassReverse / balancer://cluster/
DocumentRoot /sw/web/jbcs-httpd24-2.4/httpd/docroot
</VirtualHost>
4. 동일 도메인, 서로 다른 context-root
<VirtualHost *:7777>
ServerName app.example.com
<Location />
Require all granted
</Location>
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://cluster1>
BalancerMember http://192.168.56.101:8081/ route=server1_ins1
BalancerMember http://192.168.56.102:8081/ route=server1_ins2
ProxySet stickysession=ROUTEID
</Proxy>
<Proxy balancer://cluster2>
BalancerMember http://10.0.2.15:8083/ route=server2_ins1
BalancerMember http://10.0.2.16:8083/ route=server2_ins2
ProxySet stickysession=ROUTEID
</Proxy>
ProxyRequests off
ProxyPreserveHost on
#context-root가 cluster1인 경우, balancer에 정의한 쪽으로 loadbalancing
ProxyPass /cluster1 balancer://cluster1/
#context-root가 cluster1인 경우, balancer에 정의한 쪽으로 loadbalancing
ProxyPassReverse /cluster1 balancer://cluster1/
#context-root가 cluster2인 경우, balancer에 정의한 쪽으로 loadbalancing
ProxyPass /cluster2 balancer://cluster2/
ProxyPassReverse /cluster2 balancer://cluster2/
DocumentRoot /sw/web/jbcs-httpd24-2.4/httpd/docroot
</VirtualHost>
5.health check
- mod_proxy를 사용할 경우 proxy100continue항목에 의해 backend에 대한 health check가 이루어 진다.
100continue는 HTTP1.1을 제공하는 backend에 사용 가능하며 HTTP status 100 code를 의미한다.
backend에 header만 전달을 해보고 정상인 경우 body를 전달하는 방식이다. - BalancerMember에 등록된 backend서버가 down되면 해당 backend에 대한 접근을 60초 동안 disable한다.
즉 8080포트를 사용하는 backend서버가 다시 기동되어도 해당 서버로는 request를 보내지 않는다.
[proxy:error] AH00959: ap_proxy_connect_backend disabling worker for (backend:8080) for 60s
- backend disable에 대한 시간을 줄이기 위해선 아래와 같이 retry설정을 추가해 준다.
아래와 같이 설정할 경우 backend disable에 대산 시간이 10초로 설정된다.
<Proxy balancer://cluster>
BalancerMember http://10.0.2.15:8080/ retry=10
BalancerMember http://10.0.2.15:8081/ retry=10
</Proxy>'WEB-SERVER > OHS & JBCS & Apache' 카테고리의 다른 글
| Execution error - PCRE limits exceeded (-47): (null) (0) | 2026.04.15 |
|---|---|
| [Apache/JBCS] SSL인증서 암호 제거 및 Password 자동 입력 방법 (0) | 2026.04.14 |
| mod_proxy(이론) (1) | 2026.04.14 |
| [Apache/JBCS] 특정 URL만 접근 허용 간단 test (0) | 2026.04.07 |
| jbcs 마이크로 업데이트, 2.4.57 -> 2.4.62 (0) | 2026.03.30 |