在 CentOS 上,Web 服务器通常是 Apache(httpd),而不是 apache2(apache2 是 Debian/Ubuntu 的叫法)。下面以 CentOS 7/8 + Apache(httpd) 为例,说明如何配置虚拟主机(VirtualHost)。
# 安装
yum install httpd -y # CentOS 7
dnf install httpd -y # CentOS 8
# 启动并设置开机自启
systemctl start httpd
systemctl enable httpd
# 查看状态
systemctl status httpd
mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak
例如两个站点:
www.a.com → /var/www/awww.b.com → /var/www/bmkdir -p /var/www/a
mkdir -p /var/www/b
echo "A Site" > /var/www/a/index.html
echo "B Site" > /var/www/b/index.html
vim /etc/httpd/conf.d/vhost.conf
内容示例:
<VirtualHost *:80>
ServerName www.a.com
DocumentRoot /var/www/a
<Directory /var/www/a>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.b.com
DocumentRoot /var/www/b
<Directory /var/www/b>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# 检查语法
httpd -t
# 重启
systemctl restart httpd
192.168.1.100 www.a.com
192.168.1.100 www.b.com
浏览器访问:
http://www.a.com
http://www.b.com
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
setsebool -P httpd_can_network_connect 1
chcon -R -t httpd_sys_content_t /var/www
yum install mod_ssl
*:443 的 VirtualHost如果你用的是 CentOS Stream / Rocky / Alma 或需要 HTTPS + 多域名,可以继续问我。