Java 限制本地主机以外的web应用程序的访问

Java 限制本地主机以外的web应用程序的访问,java,jetty,Java,Jetty,我在jetty中运行了3个java web应用程序,我希望其中一个应用程序只能通过localhost访问。我不想写过滤器。可以通过修改一些jetty配置来完成吗?编写过滤器是一种便携式解决方案,并且易于配置和使用。它只有一个request.getRequestURL()来检查它是否是localhost 您可以看到使用apache作为前端的选项 另一种选择是只需在不同端口上运行servlet容器实例,并使用防火墙阻止其中一个端口。绝对最简单的解决方案是仅将服务器套接字绑定到本地主机。将连接器的ho

我在jetty中运行了3个java web应用程序,我希望其中一个应用程序只能通过localhost访问。我不想写过滤器。可以通过修改一些jetty配置来完成吗?

编写过滤器是一种便携式解决方案,并且易于配置和使用。它只有一个
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>