Java 限制本地主机以外的web应用程序的访问
我在jetty中运行了3个java web应用程序,我希望其中一个应用程序只能通过localhost访问。我不想写过滤器。可以通过修改一些jetty配置来完成吗?编写过滤器是一种便携式解决方案,并且易于配置和使用。它只有一个Java 限制本地主机以外的web应用程序的访问,java,jetty,Java,Jetty,我在jetty中运行了3个java web应用程序,我希望其中一个应用程序只能通过localhost访问。我不想写过滤器。可以通过修改一些jetty配置来完成吗?编写过滤器是一种便携式解决方案,并且易于配置和使用。它只有一个request.getRequestURL()来检查它是否是localhost 您可以看到使用apache作为前端的选项 另一种选择是只需在不同端口上运行servlet容器实例,并使用防火墙阻止其中一个端口。绝对最简单的解决方案是仅将服务器套接字绑定到本地主机。将连接器的ho
request.getRequestURL()
来检查它是否是localhost
您可以看到使用apache作为前端的选项
另一种选择是只需在不同端口上运行servlet容器实例,并使用防火墙阻止其中一个端口。绝对最简单的解决方案是仅将服务器套接字绑定到本地主机。将连接器的
host
参数设置为localhost
应该可以完成这项工作。请注意,这只适用于本地主机,它将使Jetty只在环回接口上侦听。使用虚拟主机
要通过配置实现这一点,您可以使用虚拟主机。发件人:
假设我们还有另一个webapp,
战争。我们想让战争成为现实
如上所述部署,zzz.war将
仅从777.888.888.111部署,
www.other.com、www.other.net和
www.other.org:
<!-- webapp xxx.war -->
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="contextPath">/xxx</Set>
<Set name="war"><SystemProperty name="jetty.home"/>/webapps/xxx.war</Set>
<Set name="virtualHosts">
<Array type="java.lang.String">
<Item>333.444.555.666</Item>
<Item>127.0.0.1</Item>
<Item>www.blah.com</Item>
<Item>www.blah.net</Item>
<Item>www.blah.org</Item>
</Array>
</Set>
</Configure>
<!-- webapp zzz.war -->
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="contextPath">/zzz</Set>
<Set name="war"><SystemProperty name="jetty.home"/>/webapps/zzz.war</Set>
<Set name="virtualHosts">
<Array type="java.lang.String">
<Item>777.888.888.111</Item>
<Item>www.other.com</Item>
<Item>www.other.net</Item>
<Item>www.other.org</Item>
</Array>
</Set>
</Configure>
然后将您的webapp“分配”到所选的连接器。例如,在contextA.xml
中:
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="war"><SystemProperty name="jetty.home"/>/webapps/A</Set>
<Set name="contextPath">/webappA</Set>
<Set name="connectorNames">
<Array type="String">
<Item>connA</Item>
</Array>
</Set>
...
</Configure>
/网络应用程序/A
/韦巴帕
链接不再有用(4年后)。使用vhost似乎很危险(至少在一般情况下,jetty可能有本地主机的特殊代码),因为vhost只是从http客户端接收的字符串。
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="war"><SystemProperty name="jetty.home"/>/webapps/A</Set>
<Set name="contextPath">/webappA</Set>
<Set name="connectorNames">
<Array type="String">
<Item>connA</Item>
</Array>
</Set>
...
</Configure>