如何保护jetty只允许来自localhost的连接?这意味着从系统B上的客户端B到系统A上的服务器A的连接必须失败.我知道我可以通过配置防火墙来做到这一点(所以请不要回答这个问题).我只是希望Jetty只能监听localhost(loopback).
经过一番谷歌搜索,我自己找到了问题的答案.
答案是(在jetty-distribution-7.0.1.v20091125上测试):
找到jetty.xml(etc/jetty.xml)
搜索
在行之前设置
而已.重启jetty server(java -jar start.jar
).服务器应该输出如下内容:
2009-12-23 23:02:09.291:INFO ::已启动SelectChannelConnector@127.0.0.1:8080
导入的东西是它应该说127.0.0.1而不是0.0.0.0,0.0.0.0意味着监听机器上的所有ips.
PS:我想保护apache solr(使用jetty),这可以通过相同的方式实现.
您还可以通过以下方式以编程方式(嵌入jetty)绑定到localhost:
Server server = new Server(); Connector connector = new SelectChannelConnector(); connector.setHost("localhost"); connector.setPort(80); server.addConnector(connector);
对于Jetty 9 embedded,此代码有效.
Server server = new Server(); ServerConnector connector=new ServerConnector(server); connector.setPort(80); connector.setHost("localhost"); server.setConnectors(new Connector[]{connector});
我没有试过这个,但通常的方法是将服务器绑定到localhost(即IP 127.0.0.1).这意味着Jetty服务器将仅侦听将localhost作为其目标地址的连接.
一个快速的谷歌搜索透露了这个http://old.nabble.com/How-to-make-Jetty-bind-to-specific-IP-address---to11667378.html#a11669524:
例如,将此条目添加到SelectChannelConnector:
127.0.0.1
您可以jetty.host
在启动虚拟机期间设置属性:
java -Djetty.host=127.0.0.1 -jar start.jar
顺便说一下jetty.port
.