如何通过Microsoft IIS 10部署Tomcat 9应用(Knowage)并配置反向代理?
分步配置IIS 10作为Tomcat 9反向代理(兼容现有应用)
前置清理与组件安装
- 卸载Apache Tomcat Connectors:之前的配置导致现有应用故障,需先在「控制面板-程序和功能」中找到对应Connector组件卸载,避免与IIS原生代理组件冲突。
- 安装IIS代理必需模块:
- 打开IIS管理器,选中服务器节点,右侧「管理」区域点击「Web平台安装程序」。
- 搜索并安装 Application Request Routing (ARR) 和 URL Rewrite 模块,这是IIS实现反向代理的原生组件,兼容性更强。
配置反向代理规则(仅针对Knowage路径)
1. 启用服务器代理功能
- 选中IIS管理器中的服务器节点,双击「Application Request Routing Cache」。
- 右侧操作栏点击「服务器代理设置」,勾选「启用代理」,取消勾选「启用缓存」(避免动态应用的缓存异常),点击「应用」。
2. 创建并定制URL重写规则
- 选中要托管代理的站点(推荐用现有默认站点,避免端口冲突),双击「URL Rewrite」。
- 右侧点击「添加规则」,选择「反向代理规则」,点击「确定」。
- 在弹出的设置窗口中,「输入要转发到的服务器名称或IP地址」填写
http://localhost:8080,勾选「启用SSL Offloading」,点击「确定」。 - 编辑自动生成的规则:
- 在规则列表中双击刚生成的规则,进入编辑界面。
- 「匹配URL」区域,将「模式」修改为
^knowage/(.*)(仅匹配/knowage开头的请求)。 - 「操作」区域,将「重写URL」修改为
http://localhost:8080/knowage/{R:1},勾选「追加查询字符串」,点击「应用」。
3. 优化Tomcat配置(可选)
- 打开Tomcat安装目录下的
conf/server.xml,找到<Host>节点,添加服务器外部IP/域名作为name属性,确保请求头匹配:<Host name="your-server-public-ip" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> - 重启Tomcat服务使配置生效。
验证配置
- 重启IIS:打开命令提示符,执行
iisreset。 - 本地测试:在服务器访问
http://localhost/knowage,确认正常加载Knowage应用。 - 外部测试:从外部机器访问
http://your-server-public-ip/knowage,验证可正常访问。 - 现有应用验证:访问原PHP、ASP.NET MVC/WebForm应用,确认功能不受影响。
最佳实践与注意事项
- 规则隔离:始终针对特定路径(如/knowage)创建代理规则,避免全局规则覆盖现有应用路由。
- 弃用Tomcat Connectors:ARR是IIS原生方案,与ASP.NET/PHP生态兼容性更好,不会引发应用池冲突。
- 端口安全:防火墙仅开放80/443端口供外部访问,Tomcat的8080端口设置为仅允许127.0.0.1访问,降低暴露风险。
- 日志排查:故障时查看IIS的URL Rewrite日志(站点日志目录)和Tomcat的
access_log,定位请求转发问题。 - HTTPS支持:如需外部HTTPS访问,在IIS配置SSL证书,添加HTTP转HTTPS的重写规则,同时可通过ARR做SSL卸载,Tomcat仅处理HTTP请求。
- 应用池隔离:将代理站点的应用池与现有ASP.NET/PHP应用池分开配置,避免资源竞争导致的异常。
内容的提问来源于stack exchange,提问作者IfeOluwa
相关产品推荐
相关产品推荐

