IIS和Tomcat默認都監聽80/8080端口,直接衝突。整合本質是請求分發:
| 方案 | 原理 | 優點 | 缺點 |
|---|---|---|---|
| AJP連接器 + ISAPI重定向 | IIS通過isapi_redirect.dll以AJP協議轉發給Tomcat | 性能高,原生支援,成熟穩定 | 配置複雜,需註冊DLL、配置workers.properties、uriworkermap.properties |
| HTTP反向代理 (ARR/URL Rewrite) | IIS安裝Application Request Routing (ARR),用URL Rewrite規則代理到Tomcat HTTP端口(如8080) | 配置圖形化,純HTTP協議,易調試,支援WebSocket | 略有性能損耗,需額外安裝ARR模塊 |
| 端口轉發/不同IP | 綁定不同IP或端口,前置Nginx/HAProxy分發 | 架構清晰,跨平台 | 增加組件,運維成本高 |
web.config添加:
<rule name="ProxyToTomcat" stopProcessing="true">
<match url="^(servlet|api|jsp)(.*)" />
<action type="Rewrite" url="https://localhost:8080/{R:0}" />
</rule>
server.xml保持Connector port="8080" protocol="HTTP/1.1",關閉AJP或保留備用。<serverVariables><set name="HTTP_HOST" value="{HTTP_HOST}" /></serverVariables>,確保Tomcat獲取正確Host。RemoteIpValve處理X-Forwarded-Proto。https://server/servlet/test,檢查Tomcat日誌見請求到達。Server: Microsoft-IIS/8.0(靜態)或Tomcat版本(動態)。%SystemDrive%\inetpub\logs\LogFiles、Tomcat日誌logs/catalina.xxx.log對比分析。總結:ARR反向代理是IIS 8+Tomcat 8共享80端口最現代、維護性最佳的方案,避開了傳統ISAPI DLL註冊、版本匹配的坑。