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

CentOS 7 Apache 2.4 虛擬主機三種實現方式圖文教程

     編輯:Java 綜合教學

CentOS 7 Apache 2.4 虛擬主機三種實現方式圖文教程

Apache 虛擬主機允許單台服務器托管多個網站,三種核心模式:基於 IP、基於端口、基於域名。本文在 CentOS 7 + Apache 2.4 環境下逐步實操。

環境準備

yum install -y httpd
systemctl enable --now httpd
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-port=8080/tcp  # 基於端口模式需開放
firewall-cmd --reload

一、基於 IP 的虛擬主機

原理:服務器配置多張網卡或單網卡多 IP,每個網站綁定不同 IP 的 80 端口。

1. 配置第二 IP (IP Alias)

cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:0
vi ifcfg-eth0:0
# 修改 DEVICE=eth0:0, IPADDR=192.168.1.136, NETMASK=255.255.255.0
systemctl restart network

網卡配置 重啟網絡

2. 啟用虛擬主機配置文件

vi /etc/httpd/conf/httpd.conf
# 取消註釋或添加
Include conf/extra/httpd-vhosts.conf

3. 編寫虛擬主機配置

vi /etc/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.1.135:80>
    DocumentRoot /var/www/html/a.org
    ServerName a.org
</VirtualHost>

<VirtualHost 192.168.1.136:80>
    DocumentRoot /var/www/html/zjj
    ServerName zjj
</VirtualHost>

vhosts 配置

4. 創建網站目錄與測試頁面

mkdir -p /var/www/html/a.org /var/www/html/zjj
echo "Welcome to a.org (192.168.1.135)" > /var/www/html/a.org/index.html
echo "Welcome to zjj (192.168.1.136)" > /var/www/html/zjj/index.html
systemctl restart httpd

目錄結構 頁面內容

5. 驗證

elinks https://192.168.1.135   # 顯示 a.org 頁面
elinks https://192.168.1.136   # 顯示 zjj 頁面

135 訪問 136 訪問

二、基於端口的虛擬主機

原理:同一 IP,不同端口(如 80、8080)對應不同網站。

1. 修改 httpd.conf 監聽端口

vi /etc/httpd/conf/httpd.conf
Listen 80
Listen 8080

Listen 配置

2. 配置虛擬主機

vi /etc/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
    DocumentRoot /var/www/html/port80
    ServerName port80.local
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot /var/www/html/port8080
    ServerName port8080.local
</VirtualHost>

端口虛擬主機配置

3. 創建目錄與頁面

mkdir -p /var/www/html/port80 /var/www/html/port8080
echo "Port 80 Site" > /var/www/html/port80/index.html
echo "Port 8080 Site" > /var/www/html/port8080/index.html
systemctl restart httpd

端口目錄

4. 驗證

elinks https://192.168.1.135       # Port 80
elinks https://192.168.1.135:8080  # Port 8080

80 端口訪問 8080 端口訪問

三、基於域名的虛擬主機(生產環境最常用)

原理:同一 IP、同一端口,通過 HTTP Host 頭區分網站。

1. 配置虛擬主機

vi /etc/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
    DocumentRoot /var/www/html/www.a.com
    ServerName www.a.com
    ServerAlias a.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/html/www.b.com
    ServerName www.b.com
    ServerAlias b.com
</VirtualHost>

2. 本地測試:修改 hosts 文件

# Windows: C:\Windows\System32\drivers\etc\hosts
# Linux/Mac: /etc/hosts
192.168.1.135 www.a.com a.com
192.168.1.135 www.b.com b.com

3. 創建目錄與頁面,重啟驗證

mkdir -p /var/www/html/www.a.com /var/www/html/www.b.com
echo "Site A" > /var/www/html/www.a.com/index.html
echo "Site B" > /var/www/html/www.b.com/index.html
systemctl restart httpd
# 瀏覽器訪問 https://www.a.com / https://www.b.com

四、核心配置指令速查

指令說明
VirtualHost addr:port定義虛擬主機作用域
DocumentRoot網站根目錄
ServerName主域名(必須)
ServerAlias別名域名(可多個,支持通配符 *.example.com)
DirectoryIndex默認首頁文件
ErrorLog / CustomLog錯誤/訪問日誌路徑

五、常見問題排查

  1. 403 Forbidden:目錄權限缺失,添加 <Directory /path> Require all granted </Directory>
  2. 虛擬主機不生效:檢查 httpd -S 查看解析結果,確認配置文件被 Include
  3. 端口衝突:netstat -ntlp | grep :80 排查
  4. SELinux 阻擋:setsebool -P httpd_can_network_connect 1 或調整目錄上下文 chcon -R -t httpd_sys_content_t /path
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved