我们的Web应用程序托管在端口8080(UNIX服务器)上的tomcat服务器上。
我们希望在我们的项目中实施SOLR搜索。 SOLR建议我们不应再将SOLR部署为Web应用程序。请参考以下链接。 https://wiki.apache.org/solr/WhyNoWar
默认的SOLR安装(我认为使用jetty?)将它部署在我们指定的任何端口上。
我们不希望在我们的服务器上打开8080以外的任何端口,因为我们定位的大多数用户都阻止了除默认端口之外的所有端口。
有没有办法托管SOLR而不在tomcat中部署它并仍然托管它? https://example.com/solr
答案 0 :(得分:2)
最好的办法是使用代理,例如nginx。以下是nginx配置的http块如何查找此案例的示例:
http {
upstream tomcat {
server localhost:8081;
}
upstream solr {
server localhost:8082;
}
server {
listen *:8080;
server_name my.server.com;
location / {
proxy_pass http://tomcat;
}
location /solr/ {
proxy_pass http://solr;
}
}
}
答案 1 :(得分:1)
Solr
仍然是一个网络应用。他们建议不要在另一个servlet容器中使用它,因为它们没有被推荐和测试。
他们正在提供经过全面测试的系统,并且不希望其他人(开发人员)花时间用其他容器进行测试。
我使用了solr
3.4版本并将其部署在端口8080上的tomcat服务器中。
我的应用程序部署在8080端口的另一个tomcat
,并且在另一台机器上。
所以没有关于端口的歧义,因为两个tomcats都在不同的服务器上。
我已经创建了solr war并在tomcat中部署了它。并且该服务器的只有8080端口是打开的,只能由我们的应用程序访问。
我不确定solr
版本5 ...即。是否可以在jetty
以外的其他容器中部署...但我认为它可以部署在tomcat
...你需要尝试相同...
其他的事情是,不要在同一个容器或单个容器中进行应用程序战争和solr
战争。原因是如果其中一个应用程序发生故障,一切都将失效。
如果solr
发生故障,那么应用程序可能会关闭,这对应用程序来说并不好。