Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Windows Server 系統教學 >> Server 2003

IIS 與 Apache 共用 80 埠三大方案:多 IP 綁定、Httpcfg 精準控制、反向代理

編輯:Server 2003

本機開發環境常需同時運行 IIS 與 Apache,但兩者預設皆佔用 TCP 80 埠。本文提供三種成熟共存方案,依據 IP 資源與架構需求選擇最適合的作法。

方案一:IIS 5.x(Windows 2000)多 IP 綁定 — DisableSocketPooling

適用於擁有多張網卡或多 IP 的環境。假設 IIS 綁 192.168.0.1,Apache 綁 192.168.0.2。

  1. 命令提示字元切換至 C:\Inetpub\Adminscripts。
  2. 執行:
    cscript adsutil.vbs set w3svc/DisableSocketPooling true
    回應 DisableSocketPooling : (BOOLEAN) True 即成功。
  3. 重新啟動 IIS(iisreset)。
  4. IIS 網站屬性 → IP 位址僅選 192.168.0.1;Apache httpd.conf 設 Listen 192.168.0.2:80。
注意:此參數在 IIS 6.0 中雖可設定但不生效,因 IIS 6.0 改由核心模式 HTTP.sys 處理,需改用 Httpcfg.exe(見方案二)。

方案二:IIS 6.0(Windows Server 2003)精準 IP 綁定 — Httpcfg.exe

IIS 6.0 採用 HTTP.sys 核心驅動,必須用 Httpcfg.exe 管理 IP 監聽清單。

  1. 從 Windows 2003 光碟 support\tools\Support.cab 解壓 httpcfg.exe 至 %windir%\system32\。
  2. 綁定 IIS 僅監聽特定 IP:
    httpcfg set iplisten -i 192.168.0.1
  3. 查看目前綁定:httpcfg query iplisten
  4. 刪除綁定:httpcfg delete iplisten -i 192.168.0.1
  5. 服務啟動順序腳本(確保 HTTP.sys 先綁定):
    net stop Apache2
    net stop iisadmin /y
    net start Apache2
    net start w3svc
    
  6. IIS 站台 IP 設為「全部未指派」或僅 192.168.0.1;Apache httpd.conf 設 Listen 192.168.0.2:80。

驗證:瀏覽器分別訪問 https://192.168.0.1(IIS)與 https://192.168.0.2(Apache),互不干擾。

方案三:單 IP 環境 — Apache 反向代理轉發至 IIS(不推薦生產環境)

僅有一個公網 IP 時,可讓 Apache 佔用 80 埠,IIS 改聽 81 埠,Apache 以 mod_proxy 轉發特定主機請求給 IIS。

  1. Apache httpd.conf 載入模組(取消註解):
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_connect_module modules/mod_proxy_connect.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
    
  2. 建立虛擬主機轉發規則:
    <VirtualHost *:80>
        ServerName iloves.vicp.net
        ProxyPass / https://localhost:81/
        ProxyPassReverse / https://localhost:81/
    </VirtualHost>
    
  3. IIS 網站綁定 81 埠(或其他非 80 埠)。
缺點:增加一次 Proxy 轉發延遲、單點故障、需處理 Host Header 重寫、SSL 終結較複雜。生產環境強烈建議申請多 IP 或使用第 4 層負載平衡器(如 Nginx、HAProxy、AWS ALB)而非 Apache 反向代理。

延伸應用:同機不同 PHP 版本共存

利用方案二多 IP 架構,可在 IIS 安裝 PHP 4(php.ini 放 %windir%),Apache 安裝 PHP 5(php.ini 放 PHP 5 目錄並設 PHPIniDir),實現雙版本並行:

# Apache httpd.conf 片段
LoadModule php5_module "D:/PHPServer/PHP5/php5apache2.dll"
AddType application/x-httpd-php .php
DirectoryIndex index.html index.php
PHPIniDir "D:/PHPServer/PHP5"

關鍵在於 PHPIniDir 指定專屬 php.ini 路徑,且路徑使用正斜線(/)而非反斜線(\)。

方案選擇建議

場景推薦方案優點缺點
擁有多公網 IP / 多網卡方案二(IIS 6 + Httpcfg)原生隔離、零效能損耗、SSL 獨立管理需額外 IP 成本
單公網 IP、生產環境Nginx/HAProxy 第 4 層負載平衡高效能、健檢、SSL 卸載、可擴充需額外部署一層
單公網 IP、開發/測試環境方案三零成本、快速驗證效能損耗、維護複雜

根據實際網路拓撲與業務等級選擇方案,並做好服務啟動順序自動化(批次檔/排程任務/服務相依性),即可穩定實現 IIS 與 Apache 共用 80 埠。

Copyright © Windows教程網 All Rights Reserved