限制tomcat仅响应本机请求

在VPS上搭建了nginx和tomcat应用,想通过nginx来反向代理127.0.0.1:8080的tomcat对外提供服务,但是8080端口始终对外所有地址提供监听,修改方法有以下三种:
方案一:使用防火墙拦截8080端口
这个是第一个能想到的做法,直接在iptables里做就可以了,不做过多陈述;

方案二:修改tomcat全局仅监听127.0.0.1
在$CATALINA_HOME/conf/server.xml中找到类似以下描述8080监听的标签段:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

在该标签中添加:address="127.0.0.1"
完成后为:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               address="127.0.0.1"
               redirectPort="8443" />

这样tomcat下发布的所有应用都只能被127.0.0.1访问到了

方案三:修改tomcat下的某一应用仅监听127.0.0.1
在$CATALINA_HOME/conf/server.xml中找到应用路径配置的标签,比如:

<context path="/blog" reloadable="true" docBase="/var/www/blog" />

在context标签中添加监听绑定后修改为:

<context path="/blog" reloadable="true" docBase="/var/www/blog">
    <value className="org.apache.catalina.values.RemoteAddrValue" allow="127.0.0.1" deny="" />
</context>

也可以设置为被特定地址段访问,比如只允许被192.168.1.0-192.168.5.255和192.168.10.0-192.168.15.255这样的IP段访问:

<context path="/blog" reloadable="true" docBase="/var/www/blog">
    <value className="org.apache.catalina.values.RemoteAddrValue"
        allow="192.168.[1-5].*,192.168.[10-15].*" deny="" />
</context>

以上针对tomcat配置文件修改的方案,均为重启tomcat后生效

标签: tomcat