首页 帮助中心 常见问题 如何在Apache配置多网站多域名进行访问(2025年最新版)
如何在Apache配置多网站多域名进行访问(2025年最新版)
时间 : 2025-07-01 15:33:44 编辑 : 华纳云 阅读量 : 8

  Apache作为一款成熟、稳定、功能强大的Web服务器,广泛应用于各种网站托管环境。尤其是在虚拟主机应用场景中,Apache的多站点、多域名配置能力尤为重要。本文将介绍如何在Apache配置多网站多域名进行访问,适合拥有基础Linux操作经验的站长或开发人员。

  什么是Apache多站点多域名配置

  Apache支持“虚拟主机(Virtual Hosts)”机制,允许通过不同的域名或端口将多个网站绑定到同一台服务器。比如,你可以让 www.site1.com 和 www.site2.com 指向不同的网站内容,甚至运行在同一台服务器同一个IP下。

  这种方式不仅节省资源,还极大地提升了部署效率和网站管理的灵活性,适合中小型企业、个人站长、开发者等部署多个独立项目。

  在正式开始之前,请确保以下环境是否准备:

  系统平台:Ubuntu / Debian / CentOS(本文以Ubuntu为例)

  安装好Apache Web服务器(版本建议2.4及以上)

  至少两个已经解析的域名(如 example1.com, example2.com)

  有服务器root权限或sudo权限

  第一步、安装Apache(如未安装)

sudo apt update
sudo apt install apache2 -y

  安装完成后,检查Apache服务状态:

sudo systemctl status apache2

  正常情况下,应看到Apache正在运行。

  第二步、配置网站目录结构

  我们为两个网站准备如下目录结构:

/var/www/example1.com/public_html
/var/www/example2.com/public_html

  创建并赋予权限:

sudo mkdir -p /var/www/example1.com/public_html
sudo mkdir -p /var/www/example2.com/public_html
sudo chown -R $USER:$USER /var/www/example1.com/public_html
sudo chown -R $USER:$USER /var/www/example2.com/public_html

  添加简单测试首页:

echo "<h1>Welcome to Example1.com</h1>" > /var/www/example1.com/public_html/index.html
echo "<h1>Welcome to Example2.com</h1>" > /var/www/example2.com/public_html/index.html

  第三步、创建虚拟主机配置文件

  Apache的虚拟主机文件位于 /etc/apache2/sites-available/ 目录下。我们为每个站点创建一个独立配置文件。

  配置第一个站点:example1.com

  创建配置文件:

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

  内容如下:

apache
<VirtualHost *:80>
ServerAdmin admin@example1.com
ServerName example1.com
ServerAlias www.example1.com
DocumentRoot /var/www/example1.com/public_html
ErrorLog ${APACHE_LOG_DIR}/example1_error.log
CustomLog ${APACHE_LOG_DIR}/example1_access.log combined
</VirtualHost>

  配置第二个站点:example2.com

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

  内容如下:

apache
<VirtualHost *:80>
ServerAdmin admin@example2.com
ServerName example2.com
ServerAlias www.example2.com
DocumentRoot /var/www/example2.com/public_html
ErrorLog ${APACHE_LOG_DIR}/example2_error.log
CustomLog ${APACHE_LOG_DIR}/example2_access.log combined
</VirtualHost>

  第四步、启用站点并重新加载Apache

  启用两个站点的配置文件:

sudo a2ensite example1.com.conf
sudo a2ensite example2.com.conf

  关闭默认站点(可选):

sudo a2dissite 000-default.conf

  重载Apache以应用配置: 

sudo systemctl reload apache2

  第五步、配置DNS解析(域名生效)

  确保你的域名已经通过DNS解析指向你服务器的公网IP地址。你可以在域名服务商(如Cloudflare、阿里云DNS、GoDaddy)控制面板中设置A记录:

域名 记录类型
example1.com A 你的服务器IP地址
www.example1.com A 你的服务器IP地址
example2.com A 你的服务器IP地址
www.example2.com A 你的服务器IP地址

  DNS通常几分钟至24小时内生效。

  第六步、测试是否配置成功

  在本地浏览器中分别访问:

http://example1.com
http://example2.com

  如果页面正常显示先前设置的欢迎内容,说明配置成功!

  如未成功,请检查:

  虚拟主机是否启用(用 a2ensite 命令)

  Apache是否重载或重启

  防火墙是否开放80端口

  域名是否正确解析

  第七步、配置HTTPS(可选但强烈推荐)

  为了安全性和SEO优化,强烈建议配置SSL证书。

  使用Let’s Encrypt一键启用HTTPS:

sudo apt install certbot python3-certbot-apache -y

  为两个站点申请证书:

sudo certbot --apache -d example1.com -d www.example1.com
sudo certbot --apache -d example2.com -d www.example2.com

  证书自动续期设置:

sudo systemctl status certbot.timer

  常见问题与解决方法

  1. 多个虚拟主机无法生效?

  检查文件名是否以 .conf 结尾,确保已使用 a2ensite 启用,最后别忘了重启Apache。

  2. 站点总是跳转到默认页面?

  关闭默认虚拟主机(000-default.conf),或检查虚拟主机中的 ServerName 设置是否匹配实际访问的域名。

  3. 如何调试Apache错误?

  查看Apache日志文件:

sudo tail -f /var/log/apache2/error.log

  可使用 mod_rewrite 实现SEO友好的URL重写

  配合 php-fpm 与 mod_proxy_fcgi 提高性能

  使用 apache2ctl -S 检查虚拟主机匹配情况

  对于高并发环境可考虑启用 event MPM 和缓存模块

  Apache虚拟主机配置为多站点部署提供了高效而灵活的解决方案。通过合理规划目录结构、配置DNS解析及虚拟主机文件,你可以在一台服务器上部署多个独立网站。借助HTTPS和良好的权限管理,还可以有效提升安全性与用户体验。

  只需几个步骤,你就能实现从单域名到多域名、多网站的过渡,大幅提升服务器资源利用率与站点扩展能力。

  常见问答

  Q1:Apache支持多少个虚拟主机?

  A:理论上没有上限,限制主要来自服务器硬件性能与操作系统资源。

  Q2:多个虚拟主机可以使用相同IP吗?

  A:可以。基于域名的虚拟主机支持多个站点共享同一IP地址。

  Q3:不同网站能否绑定不同端口?

  A:可以,例如80端口用于example1.com,8080端口用于example2.com,但需手动配置监听端口。

华纳云 推荐文章
香港服务器Apache配置中怎么限制访问频率 Apache配置错误:请求内部重定向次数超过最大限制(10次)的排查与修复 Linux中查找MySQL、PHP和Apache配置文件的方法 Apache配置虚拟主机实例 Windows系统服务器apache配置SSL教程 apache配置模拟外网环境开发网站的方法 windows2003 apache配置虚拟主机和绑定域名服务
活动
客服咨询
7*24小时技术支持
技术支持
渠道支持