1

我有一个应用程序,它被分成多个可部署的工件,其中一个是 REST 服务,另一个是该 REST 接口的 Web 接口,依此类推。一位客户计划在他们的 DMZ 中部署它,并希望确保 REST 接口只能由同一盒子上的应用程序访问。由于 web 应用程序(和其他应用程序)仍然需要可访问,显然不适合更改 JBoss 的侦听接口。

我尝试在 jboss-web.xml 中添加虚拟服务器,但这似乎不起作用。另一种可能性似乎是在 domain.xml 中使用重写模式,但这对我来说似乎不太适合,即使我可以让它工作。理想情况下,我想要的是特定于可部署人工制品的东西,它只允许从本地主机访问整个人工制品。

4

3 回答 3

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>
于 2013-09-25T14:19:56.850 回答
1

您可以在某人已经提到的 context.xml 中配置一个阀门。另一种方法是使用不同的 UI 端口。如果您还没有打开防火墙,您可以让 UI 和 REST API 监听不同的端口并打开防火墙。您想要配置防火墙规则,以便 REST API 端口只能接受来自 localhost 或环回接口。UI 端口应该更能接受传入的请求。

于 2013-09-25T23:36:28.520 回答
1

我认为您可以在应用程序的配置中使用Valvea Context。基本上你可以使用这样的东西:

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

更多信息可以在Valve 的 Tomcat 配置参考页面中找到。

这个问题也有一些可能有用的例子: Tomcat Valve settings

PS:这也应该适用JBoss

希望能帮助到你。

于 2013-09-25T14:27:02.347 回答