首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Apache 2.2 虛擬主機配置:IP 綁定與 hosts 解析問題

     編輯:PHP 相關知識

配置場景

Windows 環境下 Apache 2.2 配置虛擬主機,修改 hosts 綁定域名 phpweb20 到 192.168.0.80,但瀏覽器無法訪問,僅 127.0.0.1 可用。

問題分析

hosts 文件綁定 192.168.0.80 phpweb20 僅影響本機解析。若 Apache 監聽地址配置不當,外部 IP 請求不會匹配虛擬主機。

關鍵配置點

1. httpd.conf 監聽地址

# 必須監聽該 IP 的 80 端口
Listen 192.168.0.80:80
# 或監聽所有地址
Listen 80

2. VirtualHost 指令匹配

<VirtualHost 192.168.0.80:80>
    ServerName phpweb20
    DocumentRoot "C:/WAMP/Apache/htdocs/workspace/flex/phpweb20/htdocs"
    
    <Directory "C:/WAMP/Apache/htdocs/workspace/flex/phpweb20/htdocs">
        AllowOverride All
        Options All
        Require all granted  # Apache 2.4+ 需要
    </Directory>
    
    php_value include_path ".;C:/WAMP/Apache/htdocs/workspace/flex/phpweb20/include;C:/WAMP/php/PEAR"
    php_value magic_quotes_gpc off
    php_value register_globals off
</VirtualHost>

3. hosts 文件正確性

# C:\Windows\System32\drivers\etc\hosts
127.0.0.1       localhost
192.168.0.80    phpweb20
# 若本機訪問,建議同時綁定 127.0.0.1
127.0.0.1       phpweb20

為什麼 127.0.0.1 可行而 192.168.0.80 失敗?

  • Apache 默認監聽 0.0.0.0:80(所有接口),本機回環自然可達
  • 若配置 Listen 127.0.0.1:80,則外部 IP 無法連接
  • 虛擬主機 ServerName 需與請求 Host 頭匹配,hosts 解析正確是前提

排查步驟

  1. 確認 Apache 監聽端口:netstat -an | findstr :80
  2. 檢查錯誤日誌:logs/error.log
  3. 瀏覽器開發者工具查看實際請求 Host 頭
  4. 暫停防火牆測試

最佳實踐建議

  • 開發環境統一使用 127.0.0.1 + 不同端口(如 8080, 8081)
  • 生產環境使用真實域名 + DNS 解析
  • Apache 2.4+ 需添加 Require all granted 目錄權限
  • 虛擬主機配置建議拆分到 extra/httpd-vhosts.conf 並包含
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved