我正在使用 Jetty 作为 Windows 7 计算机上的应用程序服务器并在localhost:8080
上运行它来开发Java Web应用程序。
出于安全目的 - 确保我的应用程序对其他人不可见 - 我想确保它绑定到localhost:8080
(即127.0.0.1
),而不是所有接口(我都是米告诉可能是默认的)。
我已经读过,如果你只绑定到127.0.0.1
,那么扫描你的外部IP地址和的人不会打开端口,所以除了我之外我的应用基本上是不可见的开发(例如,在咖啡店的笔记本电脑上工作)。
我不知道如何在 Jetty 中执行此操作。
我听说服务器程序通常可以选择绑定哪些IP地址。
所以我尝试将以下jetty-web.xml
添加到我的网络应用的WEB-INF
目录中,但我无法判断它是否有效。在添加此内容之前和之后,netstat -an
表示LISTENING
上的8080
:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.servlet.WebApplicationContext">
<!-- Uncomment to restrict context by real host -->
<Set name="Hosts">
<Array type="java.lang.String">
<Item>127.0.0.1</Item>
</Array>
</Set>
<!-- uncomment to map context by virtual host.
<Set name="virtualHosts">
<Array type="java.lang.String">
<Item></Item>
<Item>127.0.0.1</Item>
<Item>localhost</Item>
<Item>www.acme.com</Item>
</Array>
</Set>
-->
</Configure>
答案 0 :(得分:0)
解决此问题的更好方法是使用操作系统中的防火墙。如果您不希望人们从外部连接到端口8080,请在防火墙中阻止它。如果您在笔记本电脑上运行服务并在不受信任的网络中使用它,我希望您使用防火墙来阻止您不打算访问。这样,您可以在一个位置阻止访问,而不是在侦听端口的每个应用程序的配置中阻止访问。