Tomcat 虚拟主机访问权限配置

Tomcat 给 ** 虚拟主机(<Host>)** 配置访问权限,主要就 2 种最实用方式
  1. IP 白名单 / 黑名单(最常用)
  2. 用户名密码登录访问(整个虚拟主机需要登录)
配置文件:conf/server.xml

一、配置 IP 访问权限(推荐)

直接在你的 <Host> 标签内部 添加 <Valve> 即可。

1. 仅允许指定 IP 访问(白名单)

xml
<Host name="www.test.com" appBase="testweb" unpackWARs="true" autoDeploy="true">

    <!-- 只允许这些 IP 访问当前虚拟主机 -->
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
           allow="127.0.0.1|192.168.1.*|10.0.0.5" />

</Host>
  • allow:允许的 IP,用 | 分隔
  • 192.168.1.* 表示整个网段都能访问

2. 禁止某些 IP(黑名单)

xml
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
       allow=".*"
       deny="192.168.1.100|10.0.0.6" />

二、配置虚拟主机登录权限(账号密码访问)

整个网站必须输入账号密码才能进入

1. 先在 conf/tomcat-users.xml 创建账号

xml
<tomcat-users>
    <role rolename="host-user"/>
    <user username="test" password="123456" roles="host-user"/>
</tomcat-users>

2. 在虚拟主机里配置登录验证

xml
<Host name="www.test.com" appBase="testweb" autoDeploy="true">

    <!-- 绑定用户体系 -->
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase"/>

    <!-- 给整个虚拟主机设置登录 -->
    <Context path="" docBase="ROOT">
        <security-constraint>
            <web-resource-collection>
                <url-pattern>/*</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                <role-name>host-user</role-name>
            </auth-constraint>
        </security-constraint>

        <login-config>
            <auth-method>BASIC</auth-method>
        </login-config>
    </Context>

</Host>
访问时会弹出登录框,必须输入账号密码才能进入。

三、最常用组合:IP 白名单 + 登录验证(企业常用)

xml
<Host name="www.test.com" appBase="testweb" autoDeploy="true">

    <!-- IP 白名单 -->
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
           allow="192.168.1.*|127.0.0.1" />

    <!-- 用户登录 -->
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase"/>

    <Context path="" docBase="ROOT">
        <security-constraint>
            <web-resource-collection>
                <url-pattern>/*</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                <role-name>host-user</role-name>
            </auth-constraint>
        </security-constraint>
        <login-config>
            <auth-method>BASIC</auth-method>
        </login-config>
    </Context>

</Host>

四、配置完成后必须做

  1. 保存 server.xml
  2. 保存 tomcat-users.xml
  3. 重启 Tomcat
  4. 测试访问

五、效果说明

  • IP 不在白名单 → 直接 403 禁止访问
  • IP 允许但未登录 → 弹出登录框
  • 输入正确账号密码 → 正常访问

总结(最简单记忆)

  • IP 限制:用 <Valve>
  • 账号密码限制:用 <Realm> + <security-constraint>
  • 都配置在 <Host> 内部,只对当前虚拟主机生效
上一篇 局域网即时通信软件更新导致出现arp miss攻击告警
下一篇 H3C WCG无线中控网关旁挂部署方案配置举例