在 CentOS 上配置 Apache 虚拟主机(基于域名的 VirtualHost)一般步骤如下(以 CentOS 7/8 + Apache/httpd 为例):
yum install httpd -y # CentOS 7
# 或
dnf install httpd -y # CentOS 8
启动并设置开机自启:
systemctl start httpd
systemctl enable httpd
例如有两个站点:www.a.com 和 www.b.com
mkdir -p /var/www/a.com/public_html
mkdir -p /var/www/b.com/public_html
echo "A Site" > /var/www/a.com/public_html/index.html
echo "B Site" > /var/www/b.com/public_html/index.html
Apache 虚拟主机配置通常放在:
/etc/httpd/conf.d/
vi /etc/httpd/conf.d/a.conf
内容:
<VirtualHost *:80>
ServerName www.a.com
DocumentRoot /var/www/a.com/public_html
<Directory /var/www/a.com/public_html>
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/a_error.log
CustomLog /var/log/httpd/a_access.log combined
</VirtualHost>
vi /etc/httpd/conf.d/b.conf
内容:
<VirtualHost *:80>
ServerName www.b.com
DocumentRoot /var/www/b.com/public_html
<Directory /var/www/b.com/public_html>
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/b_error.log
CustomLog /var/log/httpd/b_access.log combined
</VirtualHost>
httpd -t
systemctl restart httpd
修改本地 hosts 文件(Windows / Linux 均可):
服务器IP www.a.com
服务器IP www.b.com
浏览器访问:
http://www.a.com
http://www.b.com
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
chown -R apache:apache /var/www
setsebool -P httpd_read_user_content 1
<VirtualHost *:8080> 并监听端口如果你指的是 本地多项目 / 同 IP 多端口 / HTTPS 虚拟主机,可以告诉我具体场景,我可以给你对应配置。