我有一个应用程序,它被拆分为多个可部署的工件,其中一个是REST服务,另一个是该REST接口的Web接口,依此类推。一位客户正计划在他们的DMZ中部署它,并希望确保REST界面只能由同一个盒子上的应用程序访问。由于Web应用程序(和其他应用程序)仍然需要访问,因此显然不适合更改JBoss的监听界面。
我尝试在jboss-web.xml中添加虚拟服务器,但这似乎不起作用。另一种可能性似乎是在domain.xml中使用重写模式,但这似乎不适合我,即使我可以使它工作。理想情况下,我想要的是可部署的人工制品特有的东西,只允许从localhost访问整个人工制品。
答案 0 :(得分: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 :(得分:1)
我认为您可以在Valve
配置中使用Context
作为应用程序。实际上你可以使用这样的东西:
<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
。
希望它有所帮助。
答案 2 :(得分:1)
您可以在context.xml中配置某人已提及的阀门。另一种方法是使用不同的UI端口。您可以使UI和REST API侦听不同的端口并在防火墙上打开(如果尚未启用)。您希望配置防火墙规则,以便REST API端口只能从localhost或loopback接口接受。 UI端口应该更接受传入的请求。