在Tomcat6增加 Solr的访问权限方法如下:
编辑tomcat6/Catalina/localhost/solr.xml
<Context docBase="/var/solr/solr.war" debug="0" privileged="true" allowLinking="true" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="/var/solr" override="true"/>
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.100,localhost,192.168.1.103,127.0.0.1"/>
<Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="192.168.1.105"/>
</Context>
可参考Tomcat配置文档:http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html#Remote_Address_Filter
要使上面的配置生效,还需要重新开启tomcat的安全机制
编辑sudo vi /etc/default/tomcat6
注释掉最后一句TOMCAT6_SECURITY=no
要了解更多的安全机制,可查阅Solr Wiki:http://wiki.apache.org/solr/SolrSecurity
Solr管理后台功能可谓强大,但是真正线上,如果管理后台地址可以公开访问的话,不但core的结构会暴漏出来,索引库甚至可以被修改或删除。
推荐的做法是,在apache或其他服务器上做设置,平时禁用对外的访问地址,项目访问solr的内网地址(如:http://localhost:8080/solr/collection1);平时线下调试使用本地的solr,如需要调试线上的,可以临时开打对外地址,用完再关闭。
如果你用的是ajp方式连接apache与tomcat,可参考如下红色部分设置。需要打开时,在前边加#号注释掉,然后重启apache即可( /etc/httpd/conf/httpd.conf )
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/html ServerName www.devnote.cn ProxyPass /solr/ ! ProxyPass / ajp://localhost:8009/ ErrorLog logs/www.devnote.cn-error_log CustomLog logs/www.devnote.cn-access_log common </VirtualHost>
注:如果用ajp连接方式,内网访问时不能用http://localhost:8009/solr/collection1,需要用默认的8080或者你自己定义的tomcat端口。
==============Tomcat中实现IP访问限制==============
1
|
<
context
path=”/myapp” reloadable=”true” docBase=”/var/www/myapp” />
|
将其改成下面代码:
1
2
3
4
|
<
context
path=”/myapp” reloadable=”true” docBase=”/var/www/myapp”>
<
value
className=”org.apache.catalina.values.RemoteAddrValue”
allow=”127.0.0.1” deny=”″ />
</
context
>
|
1
2
3
4
|
<
context
path=”/myapp” reloadable=”true” docBase=”/var/www/myapp”>
<
value
className=”org.apache.catalina.values.RemoteAddrValue”
allow=”192.168.[1-5].*,192.168.[10-15].*” deny=”″ />
</
context
>
|
设置好后重新启动Tomcat就生效
Tomcat中实现IP访问限制
原文:http://zhumeng8337797.blog.163.com/blog/static/10076891420129231118360/
效果:只有指定的主机或IP地址才可以访问部署在Tomcat下的应用。
Tomcat供了两个参数供你配置:RemoteHostValve 和RemoteAddrValve,前者用于限
制主机名,后者用于限制IP地址。
通过配置这两个参数,可以让你过滤来自请求的主机或IP地址,并允许或拒绝哪些主机/IP。
一、全局设置,对Tomcat下所有应用生效
server.xml中添加下面一行,重启服务器即可:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.*" deny=""/>
此行放在</Host>之前。
例:
1,只允许192.168.1.10访问:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.10" deny=""/>
2,只允许192.168.1.*网段访问:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.*" deny=""/>
3,只允许192.168.1.10、192.168.1.30访问:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.10,192.168.1.30" deny=""/>
4,根据主机名进行限制:
<Valve className="org.apache.catalina.valves.RemoteHostValve" allow="abc.com" deny=""/>
二、局部设置,仅对具体的应用生效
根据项目配置情况进行设置:
1,使用conf目录下xml文件进行配置${tomcat_root}\conf\proj_1.xml
2,直接在server.xml中进行设置${tomcat_root}\conf\server.xml
在上述文件对应项目的</Context>前增加下面一行:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.*" deny=""/>
加入到<HOST></HOST>标签中
<Context path="/myweb" reloadable="true" docBase="E:\tomcat6\webapps\myweb">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.13.110,192.168.1.*,220.250.13.21" deny=""/>
</Context>
修改文件:
tomcat/conf/server.xml
通过tomcat限制ip访问
<Valve className="org.apache.catalina.valves.RemoteHostValve"
allow="*.mycompany.com,*.a.com"/> 域名限制
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
deny="192.168.1.*"/> IP限制
</Engine>