如何保护jetty仅允许来自localhost的连接?这意味着从客户端B连接到系统A上的服务器A 系统B 必须失败。我知道我可以通过配置防火墙来做到这一点(所以请不要回答这个问题)。我只是希望Jetty只能侦听localhost(环回)。
答案 0 :(得分:23)
经过多一点googling后,我自己找到了问题的答案。
答案是(在jetty-distribution-7.0.1.v20091125上测试):
<Call name="addConnector">
<Set name="Host"><SystemProperty name="jetty.host" default="127.0.0.1"/></Set>
行<Set name="port"><SystemProperty name="jetty.port"/></Set>
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。
P.S:我想要保护apache solr(这是 使用码头)可以实现 同样的方式。
您还可以通过以下方式以编程方式(嵌入jetty)绑定到localhost:
Server server = new Server();
Connector connector = new SelectChannelConnector();
connector.setHost("localhost");
connector.setPort(80);
server.addConnector(connector);
答案 1 :(得分:12)
对于Jetty 9 embedded,此代码有效。
Server server = new Server();
ServerConnector connector=new ServerConnector(server);
connector.setPort(80);
connector.setHost("localhost");
server.setConnectors(new Connector[]{connector});
答案 2 :(得分:11)
我没试过这个,但通常的方法是将服务器绑定到localhost(即IP 127.0.0.1)。这意味着Jetty服务器将仅侦听将 localhost 作为目标地址的连接。
快速的Google搜索显示了http://old.nabble.com/How-to-make-Jetty-bind-to-specific-IP-address---to11667378.html#a11669524:
将此条目添加到SelectChannelConnector,例如:
<Set name="Host">127.0.0.1</Set>
答案 3 :(得分:10)
您可以在启动虚拟机期间设置jetty.host
属性:
java -Djetty.host=127.0.0.1 -jar start.jar
对jetty.port
而言相同。
答案 4 :(得分:1)
我能够使用.htaccess执行此操作,但由于某种原因,localhost过滤不起作用。如果您想允许来自特定外部IP的流量并阻止所有其他IP尝试 <击> http://technologyenablingbusiness.blogspot.com/2011/03/setting-security-in-solr-running-on.html 击>
页面的存档版本答案 5 :(得分:0)
对于嵌入式Jetty 9,如下初始化Jetty服务器:
Server server = new Server(new InetSocketAddress("127.0.0.1", 8080));
记住import java.net.InetSocketAddress;
。
参考:org.eclipse.jetty.server.Server的构造函数。 `