You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在IIS上为Tomcat配置反向代理时8009端口出现问题

问题分析与解决方案

错误原因

你的问题核心是IIS反向代理未正确处理WebSocket的HTTP升级请求,导致Tomcat无法识别WebSocket连接请求,从而抛出HTTP upgrade is not supported by this protocol错误。具体来说:

  • IIS默认不会自动转发WebSocket所需的Upgrade和Connection头部,Tomcat收到的请求缺失这些关键头部,无法触发WebSocket协议升级
  • 未启用IIS的WebSocket协议支持,也未在ARR代理中开启WebSocket支持

解决步骤

1. 安装IIS WebSocket协议组件

在Windows Server 2022的服务器管理器中:

  • 打开添加角色和功能,依次选择Web服务器(IIS)-> 应用程序开发 -> 勾选WebSocket协议,完成安装

2. 修改IIS反向代理配置(web.config)

更新你的rewrite规则,添加WebSocket头部传递支持,以及允许修改对应的服务器变量:

<rewrite>
  <allowedServerVariables>
    <!-- 允许传递WebSocket相关头部 -->
    <add name="HTTP_UPGRADE" />
    <add name="HTTP_CONNECTION" />
  </allowedServerVariables>
  <rules>
    <rule name="ReverseProxyInboundRule1" stopProcessing="true">
      <match url="(.*)" />
      <action type="Rewrite" url="http://localhost:8080/TestWeb/{R:1}" />
      <!-- 转发WebSocket升级所需的头部 -->
      <serverVariables>
        <set name="HTTP_UPGRADE" value="{HTTP_UPGRADE}" />
        <set name="HTTP_CONNECTION" value="{HTTP_CONNECTION}" />
      </serverVariables>
    </rule>
  </rules>
</rewrite>

3. 启用ARR的WebSocket支持

打开IIS管理器的Application Request Routing Cache:

  • 点击左侧的Server Proxy Settings
  • 在弹出的设置窗口中,勾选Enable WebSocket support选项,保存配置

额外说明:Tomcat本身支持HTTPS

你之前认为Tomcat无法处理HTTPS是误解,Tomcat可以直接配置HTTPS连接器,不需要依赖IIS代理。如果后续想直接用Tomcat处理HTTPS,可以修改Tomcat的server.xml,添加类似以下的HTTPS连接器配置:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true">
    <SSLHostConfig>
        <Certificate certificateKeystoreFile="conf/your-certificate.jks"
                     type="RSA" />
    </SSLHostConfig>
</Connector>

需要将证书转为JKS格式(可使用keytool工具),并替换上述配置中的证书路径。


内容的提问来源于stack exchange,提问作者HarryF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 10:05:32