温馨提示×

如何配置多站点apache2

小樊
50
2026-10-05 03:35:04
栏目: 编程语言

下面以 Ubuntu / Debian 上的 Apache2 为例,介绍常见的 多站点(VirtualHost)配置方法,适用于一台服务器托管多个域名或子站点。


一、基本思路

Apache 通过 虚拟主机(VirtualHost) 实现多站点:

  • 每个站点一个配置文件
  • 通过 ServerName(域名)区分
  • 不同站点可使用不同目录、端口、证书

二、目录结构说明

常见路径:

/etc/apache2/
├── sites-available/   # 可用站点配置
├── sites-enabled/    # 已启用站点(软链接)
├── ports.conf        # 端口配置

三、示例:配置两个站点

1️⃣ 创建站点目录

sudo mkdir -p /var/www/site1
sudo mkdir -p /var/www/site2

echo "site1" | sudo tee /var/www/site1/index.html
echo "site2" | sudo tee /var/www/site2/index.html

2️⃣ 创建站点配置文件

站点1

sudo nano /etc/apache2/sites-available/site1.conf

内容:

<VirtualHost *:80>
    ServerName site1.com
    ServerAlias www.site1.com

    DocumentRoot /var/www/site1

    <Directory /var/www/site1>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/site1_error.log
    CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>

站点2

sudo nano /etc/apache2/sites-available/site2.conf

内容类似,仅改:

ServerName site2.com
DocumentRoot /var/www/site2

3️⃣ 启用站点

sudo a2ensite site1.conf
sudo a2ensite site2.conf

禁用默认站点(可选):

sudo a2dissite 000-default.conf

4️⃣ 检查并重载 Apache

sudo apache2ctl configtest
sudo systemctl reload apache2

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

修改本地 hosts:

sudo nano /etc/hosts

添加:

127.0.0.1 site1.com
127.0.0.1 site2.com

浏览器访问:

http://site1.com
http://site2.com

五、使用不同端口(可选)

修改 ports.conf:

Listen 8080

站点配置:

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

六、HTTPS(多站点)

  • 每个站点单独证书
  • 使用 *:443 + SSLCertificateFile

示例:

<VirtualHost *:443>
    ServerName site1.com
    DocumentRoot /var/www/site1

    SSLEngine on
    SSLCertificateFile /etc/ssl/site1.crt
    SSLCertificateKeyFile /etc/ssl/site1.key
</VirtualHost>

启用模块:

sudo a2enmod ssl

七、常见问题

✅ 访问错站 → ServerName 写错
✅ 403 → 目录权限 / Require all granted
✅ 不生效 → 没 a2ensite 或没 reload


如果你用的是 CentOS / Rocky / Alma 或 Docker Apache,或想要 WordPress 多站点 / 子域名方案,告诉我我可以给你对应配置。

0 踩