温馨提示×

Apache2怎么配置虚拟主机

小樊
57
2026-07-31 23:17:23
栏目: 云计算

下面以 Apache2(最常见于 Ubuntu/Debian) 为例,说明如何配置 虚拟主机(VirtualHost)。如果你用的是 CentOS/RHEL,路径会略有不同。


一、虚拟主机的作用

虚拟主机可以让 一台服务器同时托管多个网站,例如:

  • www.a.com
  • www.b.com

每个站点使用不同的目录、端口或域名。


二、前提条件

  1. 已安装 Apache2
sudo apt update
sudo apt install apache2
  1. 确认 Apache 已启动
sudo systemctl status apache2

三、配置基于域名的虚拟主机(最常用)

1️⃣ 创建网站目录

sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html

设置权限:

sudo chown -R $USER:$USER /var/www/example.com
sudo chown -R $USER:$USER /var/www/test.com

2️⃣ 创建测试页面

echo "<h1>example.com</h1>" > /var/www/example.com/public_html/index.html
echo "<h1>test.com</h1>" > /var/www/test.com/public_html/index.html

3️⃣ 创建虚拟主机配置文件

示例:example.com

sudo nano /etc/apache2/sites-available/example.com.conf

内容:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html

    <Directory /var/www/example.com/public_html>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>

同理创建 test.com.conf。


4️⃣ 启用虚拟主机

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf

禁用默认站点(可选):

sudo a2dissite 000-default.conf

5️⃣ 检查配置并重载 Apache

sudo apache2ctl configtest
sudo systemctl reload apache2

四、本地测试(无真实域名)

修改本地 hosts 文件:

Linux / macOS

sudo nano /etc/hosts

Windows

C:\Windows\System32\drivers\etc\hosts

添加:

127.0.0.1 example.com
127.0.0.1 test.com

浏览器访问:

http://example.com
http://test.com

五、基于端口的虚拟主机(了解)

Listen 8080

<VirtualHost *:8080>
    DocumentRoot /var/www/port8080
</VirtualHost>

六、常见问题

❌ 403 Forbidden

  • 目录权限问题
  • <Directory> 未配置 Require all granted

❌ 虚拟主机不生效

  • 忘记 a2ensite
  • 没重载 Apache
  • 浏览器缓存

七、CentOS / RHEL 差异(简要)

  • 配置文件路径:/etc/httpd/conf.d/
  • 服务名:httpd
  • 无 a2ensite,直接创建 .conf

如果你愿意,我可以帮你:

  • ✅ 配置 HTTPS(Let’s Encrypt)
  • ✅ 配置 伪静态(.htaccess)
  • ✅ 同时支持 HTTP + HTTPS
  • ✅ Docker / 宝塔 / 云服务器场景

你可以直接贴你的 系统版本 + 报错信息。

0 踩