본문 바로가기
FullStack/10. WeB

Apache Proxy 설정

by nakanara 2021. 3. 12.
반응형

Apache를 이용한 WAS 연동에는 jk_mod를 이용하여 apj 통신을 하는 방법과, proxy를 이용하여 연결을 전달되도록 사용할 수 있는 방법이 있습니다.

mod_jk를 통하여 설정을 하는 경우 정적 파일의 처리 및 로드밸런싱 등 세밀한 부분을 설정할 수 있다는 장점이 있습니다.

proxy의 설정은 단순하게 해당 URL을 내부의 다른 URL로 변경하여 처리하는 방식으로 web server의 역할이 부하 분산이 아닌 내부의 특정 서버가 처리할 수 있도록 전달하는 방법입니다. 해당 방법은 쉽게 설정이 가능하며, WAS 다른 설정을 할 필요성이 없습니다.

http.conf 파일 중 mod_proxy 관련 설정 정보 주석 제거

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

http://dev.nakanara.com 주소로 접속하였을 때 내부적으로 http://localhost:8080 넘겨서 처리하도록 설정하였습니다.

extra/httpd-vhosts.conf

<VirtualHost *:80>
  ServerAdmin dev.nakanara.com
  ProxyRequests off
  ProxyPreserveHost On
  ProxyPass / http://localhost:8080/ acquire=3000 timeout=600 Keepalive=On
  ProxyPassReverse / http://localhost:8080/
</VirtualHost>

이를 응용한다면 부하 분산을 위해서 기능에 따른 서브도메인을 분리하여 사용하도록 설정도 가능합니다.
http://dev.nakanara.com -> 8080, http://api.nakanara.com -> 9090 연결하여 서버의 부하를 줄일 수 있는 방법도 있습니다.

extra/httpd-vhosts.conf

<VirtualHost *:80>
  ServerAdmin dev.nakanara.com
  ProxyRequests off
  ProxyPreserveHost On
  ProxyPass / http://localhost:8080/ acquire=3000 timeout=600 Keepalive=On
  ProxyPassReverse / http://localhost:8080/
</VirtualHost>

<VirtualHost *:80>
  ServerAdmin api.nakanara.com
  ProxyRequests off
  ProxyPreserveHost On
  ProxyPass / http://localhost:9090/ acquire=3000 timeout=600 Keepalive=On
  ProxyPassReverse / http://localhost:9090/
</VirtualHost>

이와 별도로 API의 버전을 변경하였지만, 외부에서는 동일한 주소를 사용하도록 하고, 내부에서만 다르게 호출하도록 설정하여 사용할 수 있습니다.

http://api.nakanara.com/user -> http://localhost:8080/user/v1 변경된 API 호출

extra/httpd-vhosts.conf

<VirtualHost *:80>
  ServerAdmin api.nakanara.com
  ProxyRequests off
  ProxyPreserveHost On
  <Location /user>
    ProxyPass http://localhost:8080/user/v2 acquire=3000 timeout=600 Keepalive=On
    ProxyPassReverse http://localhost:8080/user/v2
  </Location>
</VirtualHost>
  • Keepalive

    • 사용자로부터 연결된 Port를 유지하여 동일한 사용자의 요청을 처리하도록 하는 옵션
    • 요청마다 Port를 새로 연결하는 것은 비효율
    • KeepAliveTimeout 설정값을 초과하는 경우 close 함
    • KeepAliveTimeout 전에 요청이 오는 경우 대기시간 초기화

관련 정보

#apache #httpd #proxy #webserver

반응형