首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

IIS 8與Tomcat 8整合指南:基於反向代理的80端口共享方案

     編輯:程式設計綜合問答

問題背景

  • 測試服務器同時安裝IIS 8(HTTP服務器)和Tomcat 8(Servlet容器)。
  • 僅對外開放80端口,需同時支援靜態資源(IIS)與動態Servlet(Tomcat)。
  • 嘗試網上方案均不穩定,尋求正確整合姿勢。

核心衝突:端口佔用與協議分發

IIS和Tomcat默認都監聽80/8080端口,直接衝突。整合本質是請求分發:

  • 靜態資源(HTML/CSS/JS/圖片)-> IIS 高效處理。
  • 動態請求(/servlet/、/*.jsp、/api/*)-> 轉發給Tomcat。

主流整合方案對比

方案原理優點缺點
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分發架構清晰,跨平台增加組件,運維成本高

推薦方案:IIS ARR反向代理(最適合Windows環境)

步驟概覽

  1. 安裝ARR:Web Platform Installer搜索「Application Request Routing」安裝。
  2. 啟用代理:IIS管理器 -> 服務器節點 -> Application Request Routing Cache -> Server Proxy Settings -> 勾選「Enable proxy」。
  3. 配置URL Rewrite規則:在網站web.config添加:
    <rule name="ProxyToTomcat" stopProcessing="true">
      <match url="^(servlet|api|jsp)(.*)" />
      <action type="Rewrite" url="https://localhost:8080/{R:0}" />
    </rule>
    
  4. Tomcat配置:server.xml保持Connector port="8080" protocol="HTTP/1.1",關閉AJP或保留備用。
  5. 靜態資源直通:確保靜態文件請求不命中Rewrite規則,由IIS直接服務。

關鍵注意點

  • 主機頭保留:Rewrite規則添加<serverVariables><set name="HTTP_HOST" value="{HTTP_HOST}" /></serverVariables>,確保Tomcat獲取正確Host。
  • Session粘性:若Tomcat集群,配置ARR Server Farm實現Sticky Session。
  • SSL卸載:IIS終結HTTPS,轉發HTTP給Tomcat,需在TomcatRemoteIpValve處理X-Forwarded-Proto。
  • 防火牆:僅對外開放80/443,Tomcat 8080僅本地回環訪問。

驗證與調試

  • 瀏覽器訪問https://server/servlet/test,檢查Tomcat日誌見請求到達。
  • F12 Network面板確認響應頭Server: Microsoft-IIS/8.0(靜態)或Tomcat版本(動態)。
  • IIS日誌%SystemDrive%\inetpub\logs\LogFiles、Tomcat日誌logs/catalina.xxx.log對比分析。

官方文檔:Tomcat IIS HowTo (含ISAPI方案)

總結:ARR反向代理是IIS 8+Tomcat 8共享80端口最現代、維護性最佳的方案,避開了傳統ISAPI DLL註冊、版本匹配的坑。

  1. 上一篇文章:
  2. 下一篇文章:
百度地圖 API 根據地址字符串定位標記點 C# 私有建構函式的用途:單例模式核心機制 JMS 中使用 JTA 控制全域事務失效的根因與修正 軟體如何識別電腦?解析試用期限制的追蹤機制 CSS 內部樣式表定義詳解: