Links User Guide 참고 아파치 톰캣 개발  | 프록시 지원 기능은 어떻게 사용하는가?| Introduction |  
톰캣의 표준 환경 설정을 사용할, 웹 애플리케이션은 처리하기 위해 요청된 서버 이름과 포트 번호를 물을 수 있습니다. 
톰캣이 Coyote HTTP/1.1 Connector을 통해 독립적으로 구동될 때, 톰캣은 일반적으로 
요청에 부합하는 서버이름을 전해주며, 포트 번호는 Connector가 듣고 있습니다.
서블릿 API는 아래의 목적과 같은 흥미로운 것을 불러옵니다. 아래 :  
ServletRequest.getServerName(): 요청이 전송된 서버의 호스트 이름을 반환. 
ServletRequest.getServerPort(): 요청이 전송된 서버의 포트 번호를 반환. 
ServletRequest.getLocalName(): 요청된 인터넷 프로토콜(IP) 인터페이스의 호스트 이름을 반환. 
ServletRequest.getLocalPort(): 요청된 인터넷 프로토콜(IP) 인터페이스의 포트 번호를 반환. 
 
당신이 프록시 서버 뒤에서 구동시켰을 때(혹은 웹서버가 프록시 서버처럼 동작하도록 설정 돼 있을 때),
당신은 때때로 이러한 호출에 의해 반환 된 값을 관리하는 것을 선호할 것입니다.
특히, 당신은 일반적으로 원래 요청된 것에 명시된 포트 번호를 반영하기를 원하지,
Connector자체가 받은 것을 원하지는 않을 것입니다.
당신은 proxyName 와 proxyPort라는 속성의
<Connector> 라는 요소를 이러한 값들로 사용할 수 있습니다. 
프록시 지원은 다양한 형태가 될 수 있습니다.
아래의 섹션들은 서버의 일반적인 경우에 대한 프록시 환경 설정을 설명한 것입니다. 
  |  
 | Apache 1.3 Proxy Support |  
아파치 1.3은 프록시 서버처럼 움직일 수 있는 웹서버로 설정된 선택적인 모듈(mod_proxy)을 지원합니다.
이것은 mod_jk와 같은 웹 커넥터 설정을 할 필요 없이
톰캣 인스턴스에 특정 웹 응용 프로그램에 대한 요청을 전달하는 데 사용할 수 있습니다,
이것을 달성하기 위해서, 당신은 아래의 일들을 따라야 합니다. 아래 :  
mod_proxy module을 포함하여 아파치 복사본을 구성합니다.
    만약 당신이 소스로부터 만들었다면 이것을 가장 쉽게 하는 방법은
    --enable-module=proxy를 ./configure라는 명령어 줄에 지시하는 것입니다. 
- 만약 아직 당신을 위해 추가되지 않았다면, 
    If not already added for you, 아파치 구동 시간의 
mod_proxy라는 모듈이 아직 로딩중인지
    당신의 파일에 httpd.conf라고 지시하여 확인해 봐야 합니다.
    file:
  |   |   |    | 
LoadModule proxy_module  {path-to-modules}/mod_proxy.so
AddModule  mod_proxy.c
 |   |    |   |   |  
  
- 당신의 
httpd.conf라는 파일에 당신이 원하는 대로 톰캣에
    전송해 주는 웹 응용 프로그램이  2가지 지시를 하는 것을 포함합니다.
    예를 들어서, 응용 프로그램에서 /myapp라는 콘텍스트 경로를 전송합니다.:
  |   |   |    | 
ProxyPass         /myapp  http://localhost:8081/myapp
ProxyPassReverse  /myapp  http://localhost:8081/myapp
  |   |    |   |   |  
  
    각각은 아파치가 http://localhost/myapp/*라는 형태의 URL들을 톰캣 커넥터 에게 보낸 것을
    8081포트가 듣고 있다는 것을 말해줍니다. 
- 당신의 톰캣복사본을 특별한 
<Connector> 요소, 즉 적절한 프록시 셋팅으로 설정하십시오.
    예를 들어서 : 
  |   |   |    | 
<Connector port="8081" ...
              proxyName="www.mycompany.com"
              proxyPort="80"/>
 |   |    |   |   |  
  
    이것은 서블릿 안의 이 웹 응용프로그램이 모든 프록시의 요구가 포트 80에 있는
    www.mycompany.com로 지시되도록 만듭니다. 
<Connector>라는 요소에서 proxyName라는 속성을 생략하는 것은 합법적이다. 
    만약 당신이 그렇게 한다면, request.getServerName()로 돌려 받은 값은 톰캣이 실행되고 있는
    호스트의 이름이 될 것입니다. 위의 예에서는 localhost입니다. 
- 만약 당신이 또한 포트 8080(동일한 서비스요소에 중첩된 요소)
    에서 듣는 
<Connector>를 갖고 있다면,
    각각의 포트에 대한 요구는 같은 집합의 가상 호스트와 웹 응용프로그램이 동일하게 공유합니다. 
- 당신은 아마도 포트 8081(위의 예에서) 오직 실행중인 아파치 서버만이 수락되도록 
    당신의 운영체제의 IP필터링 기능이 제한해 주길 바랄것입니다.
 
- 그 대신에, 당신은 아래와 같이 오직 프록싱을 통해서만 만날 수 있는 웹 응용프로그램의
    시리즈를 설정할 수 있다.
    
    - 또 다른 프록시 포트를 위한 하나의 
<Connector>만을 포함하고 있는 
    <Service>를 설정할 수 있다. 
    - 적절한 Engine, Host, 
    그리고 프록싱을 통해 가상 호스트와 웹 응용 프로그램에 접근할 수 있는
    Context요소를 설정할 수 있다.
 
    - 원하는대로, 앞서 설명한 IP필터와 포트 8081는 보호 할 수 있다. 
 
      
- 아파치로부터 프록시가 요구된 경우, 웹서버는 이 요청을 이것의 접근 로그에 기록합니다.
    그러므로, 사람들은 일반적으로 어떤 접근 로그가 톰캣 자체로부터 동작하지 못하길 원합니다.
 
 
이 방법으로 프록시가 요청된 경우, 모든 웹 응용프로그램을 설정하기 위한 요구는
   톰캣(정적인 컨텐트를 요구하는 것을 포함하여)으로 수행된다.당신은 mod_jk라는 웹 커넥터를 
   mod_proxy를 대신해서 사용하면 수행을 개선시킬 수 있습니다.
   필터나 보안 제한에 정의된 웹 응용프로그램 개발 기술자(/WEB-INF/web.xml)가 수행하지 않는
   정적인 컨텐츠를 제공하는 웹서버를 mod_jk는 설정할 수 있다. 
  |  
  |