2013-09-25 4 views
1

여러 배포 가능한 인공물로 분할 된 응용 프로그램이 있습니다. 하나는 REST 서비스이고 다른 하나는 REST 인터페이스에 대한 웹 인터페이스입니다. 한 고객이 DMZ에 이것을 배포 할 계획이며 REST 인터페이스가 동일한 상자의 응용 프로그램에서만 액세스 할 수 있도록하려는 것입니다. 웹 응용 프로그램 (및 다른 사용자)은 여전히 ​​액세스 할 수 있어야하므로 JBoss의 수신 인터페이스를 변경하는 것은 적합하지 않습니다.JBoss 7의 배포 된 응용 프로그램에 대한 액세스를 로컬 호스트에만 제한하려면 어떻게합니까?

jboss-web.xml에 가상 서버를 추가하려고 시도했지만 작동하지 않는 것 같습니다. 또 다른 가능성은 domain.xml에서 재 작성 패턴을 사용하고있는 것처럼 보이지만, 이것이 제대로 작동한다고해도 내게는별로 적합하지 않은 것처럼 보입니다. 이상적으로는 내가 원하는 것은 로컬 호스트에서 액세스 할 수있는 전개 가능한 인공물에만 해당되는 것입니다.

답변

1

하나의 프로젝트에서 비슷한 요구 사항이 있었으며 가상 서버는이 작업을 수행하는 유일한 방법입니다.

당신이해야 할 모든 standalone.xml에 추가하는 것입니다/domain.xml의 :

<virtual-server name="only-local"> 
      <alias name="localhost"/> 
      <alias name="127.0.0.1"/> 
    </virtual-server> 

다음 응용 프로그램의 jboss-web.xml 파일 :

<virtual-host>only-local</virtual-host> 
1

나는 당신이 할 수있는 생각 응용 프로그램의 Context 구성에 Valve 구성을 사용하십시오. 다음과 같이 사용할 수 있습니다 :

<Context ...> 
    <Valve className=”org.apache.catalina.valves.RemoteAddrValve” allow=”127.0.0.1″/> 
... 
</Context> 

자세한 내용은 Tomcat config reference page for Valve에서 찾을 수 있습니다. Tomcat Valve settings

PS :

또한이 질문에 유용 할 수 있습니다 몇 가지 예제를 가지고이뿐만 아니라 JBoss을 위해 작동합니다.

희망이 있습니다.

1

이미 언급 한 밸브를 context.xml에 구성 할 수 있습니다. 그 대안은 다른 UI 포트를 갖는 것입니다. 사용자는 UI를 만들고 REST API는 다른 포트를 수신하고 아직 방화벽이 켜져 있지 않은 경우 스위치를 켭니다. REST API 포트가 localhost 또는 루프백 인터페이스에서만 허용 할 수 있도록 방화벽 규칙을 구성하려고합니다. UI 포트는 들어오는 요청을 더 받아 들여야합니다.

관련 문제