接受到运行在Windows Server 2012上的Solr/Jetty实例的远程连接



我正在Windows Server 2012上运行Solr 4.10.1 Jetty实例。我使用的是下载附带的简单示例Jetty版本,通过运行java -jar start.jar(来自solr-4.10.1\example),我可以通过http://localhost:8983/solr从Windows Server访问我的solr实例。

现在我想远程访问Solr/Jetty实例,即从另一台计算机访问。也就是说,我希望能够通过从远程客户端/计算机对http://<server IP>:8080/solr和/或http://<server_domain>:8080/solr的HTTPTP调用来访问在我的Windows Server上运行的Solr实例。

我在Windows Server上创建了一个入站防火墙规则,接受本地端口8080上的任何远程地址,并将jetty.xml上的jetty端口更改为8080,这很好(我可以从Windows Server访问http://localhost:8080/solr上的Solr实例)。但是,当我试图将jetty主机更改为服务器的IP时,我无法再访问Solr核心集合——即核心选择器中没有集合,因此我无法在'http://<server IP>/solr/#/collection1/'上执行任何查询——我只看到一个"空白"的Solr接口。

我更改的jetty.xml的部分如下:

<Call name="addConnector">
  <Arg>
      <New class="org.eclipse.jetty.server.bio.SocketConnector">
        <Set name="host"><SystemProperty name="jetty.host" default="<WINDOWS_SERVER_IP>"/></Set>
        <Set name="port"><SystemProperty name="jetty.port" default="8080"/></Set>
        <Set name="maxIdleTime">50000</Set>
        <Set name="lowResourceMaxIdleTime">1500</Set>
        <Set name="statsOn">false</Set>
      </New>
  </Arg>
</Call>

首先,这是正确的方法吗?如果是,我做错了什么?如果没有,我该如何实现?我试着寻找这样做的方法,但似乎找不到任何好的资源。

此问题已解决。我不得不做另外两件事:1.让Jetty使用特殊的IP 0.0.0.0让它监听所有接口:

<Call name="addConnector">
  <Arg>
      <New class="org.eclipse.jetty.server.bio.SocketConnector">
        <Set name="host"><SystemProperty name="jetty.host" default="<0.0.0.0>"/></Set>
        <Set name="port"><SystemProperty name="jetty.port" default="8080"/></Set>
        <Set name="maxIdleTime">50000</Set>
        <Set name="lowResourceMaxIdleTime">1500</Set>
        <Set name="statsOn">false</Set>
      </New>
  </Arg>
</Call> 
  1. 打开端口8080上从客户端到域防火墙上服务器的HTTP流量

现在,此域中连接的所有计算机都可以在http://SERVER_DOMAIN_NAME:8080/solr上访问Solr。

最新更新