在 CentOS 上通过 Apache(httpd) 配置虚拟主机(Virtual Host),常见有两种方式:基于域名 和 基于端口。下面以 CentOS 7/8 + Apache(httpd) 为例说明。
yum install httpd -y
systemctl start httpd
systemctl enable httpd
mkdir -p /var/www/site1
mkdir -p /var/www/site2
echo "site1" > /var/www/site1/index.html
echo "site2" > /var/www/site2/index.html
在 conf.d 目录下新建配置文件:
vi /etc/httpd/conf.d/vhost.conf
内容示例:
<VirtualHost *:80>
ServerName www.site1.com
DocumentRoot /var/www/site1
<Directory /var/www/site1>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName www.site2.com
DocumentRoot /var/www/site2
<Directory /var/www/site2>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
httpd -t
systemctl restart httpd
修改本地 hosts 文件:
192.168.1.100 www.site1.com
192.168.1.100 www.site2.com
浏览器访问:
http://www.site1.com
http://www.site2.com
vi /etc/httpd/conf/httpd.conf
确保有:
Listen 80
Listen 8080
vi /etc/httpd/conf.d/port.conf
<VirtualHost *:80>
DocumentRoot /var/www/site1
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot /var/www/site2
</VirtualHost>
systemctl restart httpd
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
如果页面打不开:
setsebool -P httpd_can_network_connect 1
restorecon -Rv /var/www
403 Forbidden:目录权限或 SELinuxDocumentRoot does not exist:路径写错如果你用的是 CentOS Stream / Rocky / Alma 或需要 HTTPS(SSL)虚拟主机,我也可以继续补充。