温馨提示×

Apache怎么设虚拟主机

小樊
45
2026-08-27 13:44:54
栏目: 云计算

在 Apache 里设置虚拟主机(Virtual Host),常见有两种方式:基于端口基于域名。下面以 Linux(如 Ubuntu / CentOS) 为例,一步一步说明,Windows 也类似。


一、确认 Apache 已安装并启动

apachectl -v
sudo systemctl start apache2   # Ubuntu
sudo systemctl start httpd    # CentOS

二、基于域名的虚拟主机(最常用)

1️⃣ 准备网站目录

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

添加测试页面:

echo "example.com" | sudo tee /var/www/example.com/public_html/index.html
echo "test.com" | sudo tee /var/www/test.com/public_html/index.html

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

✅ Ubuntu / Debian

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

✅ CentOS / RHEL

sudo nano /etc/httpd/conf.d/example.com.conf

3️⃣ 写入虚拟主机配置

<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️⃣ 启用配置(Ubuntu 必需)

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
sudo systemctl reload apache2

✅ CentOS 无需 a2ensite,直接重启即可:

sudo systemctl restart httpd

5️⃣ 本地测试(修改 hosts 文件)

sudo nano /etc/hosts

添加:

127.0.0.1 example.com
127.0.0.1 test.com

浏览器访问:

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

三、基于端口的虚拟主机(了解即可)

1️⃣ 增加监听端口

# /etc/apache2/ports.conf 或 httpd.conf
Listen 8080

2️⃣ 配置虚拟主机

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

四、常见问题排查

❌ 403 Forbidden

  • 目录权限不对
sudo chown -R www-data:www-data /var/www
sudo chmod -R 755 /var/www

❌ 虚拟主机不生效

  • 忘记 a2ensite
  • 忘记 reload apache
  • ServerName 和访问域名不一致

五、推荐结构(生产环境)

/etc/apache2/
├── sites-available/
│   ├── example.com.conf
│   └── test.com.conf
├── sites-enabled/

如果你愿意,可以告诉我:

  • ✅ 系统版本(Ubuntu / CentOS / Windows)
  • ✅ Apache 版本
  • ✅ 是否用 HTTPS(SSL)

我可以给你完全贴合你环境的配置示例

0