应配置Tomcat端RemoteAddrValve限制内网IP访问manager/host-manager,并启用RemoteIpValve传递真实IP,同时加强身份认证与默认应用禁用。

Apache 本身不直接管理 Tomcat 的后台管理页面(如 /manager 或 /host-manager),这些是 Tomcat 自带的 Web 应用。若你使用的是 Apache + Tomcat 架构(例如通过 mod_proxy 或 mod_jk 反向代理),要实现“后台管理只允许特定内网 IP 访问”,需在 Tomcat 端做访问控制,而非 Apache 端——因为 Apache 代理后,Tomcat 看到的请求源 IP 可能是 Apache 的本地地址(如 127.0.0.1),需确保真实客户端 IP 正确传递并生效。
关键前提:确保真实 IP 可识别
若 Apache 做反向代理,必须配置 X-Forwarded-For 头,并在 Tomcat 的 server.xml 中启用 RemoteIpValve,否则 RemoteAddrValve 将始终只看到 127.0.0.1:
- 在 Apache 的代理配置中添加:
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}e" - 在 Tomcat
server.xml的<Host>内添加:<Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="x-forwarded-for" protocolHeader="x-forwarded-proto"/>
限制 manager 和 host-manager 仅内网 IP 访问
直接修改对应应用的 META-INF/context.xml 文件,这是最精准、推荐的方式(比全局 server.xml 更安全,避免误锁其他应用):
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 编辑
$CATALINA_HOME/webapps/manager/META-INF/context.xml,在<Context>标签内加入:<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192\.168\.10\.\d+|127\.\d+\.\d+\.\d+|::1" deny=""/> - 同样编辑
$CATALINA_HOME/webapps/host-manager/META-INF/context.xml,插入相同<Valve>配置 - 注意:IP 段需用反斜杠转义点号(
\.),支持正则语法;\d+表示 0–255 的数字匹配
补充加固措施
仅靠 IP 限制不够,必须配合身份认证:
- 在
$CATALINA_HOME/conf/tomcat-users.xml中定义角色与用户,密码建议用digest.sh加密(SHA-256 或更安全算法):<role rolename="manager-gui"/><br><user username="admin" password="$sh$123456..." roles="manager-gui"/>
- 确认
server.xml中UserDatabaseRealm已启用摘要算法:<Realm className="org.apache.catalina.realm.UserDatabaseRealm" digest="sha-256" resourceName="UserDatabase"/> - 生产环境强烈建议禁用默认管理应用:直接删除
webapps/manager和webapps/host-manager目录
验证与调试提示
修改后重启 Tomcat,测试时注意:
- 从允许 IP 访问
http://your-domain:8080/manager/html,应能登录 - 从禁止 IP 访问,应返回 HTTP 403(非 401),说明 Valve 生效
- 检查 Tomcat 日志
logs/catalina.out或localhost.*.log,确认 Valve 是否加载、是否有匹配日志 - 若始终 403,检查是否多个 Valve 冲突,或正则书写错误(如漏转义、多空格)

















