下面以 CentOS 7/8 + Apache(httpd) 为例,讲一下 Apache 虚拟主机(VirtualHost) 的配置方法,包含基于域名和基于端口两种常见方式。
yum install httpd -y
# 或
dnf install httpd -y
systemctl start httpd
systemctl enable httpd
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
mkdir -p /var/www/example.com/public_html
mkdir -p /var/www/test.com/public_html
echo "example.com" > /var/www/example.com/public_html/index.html
echo "test.com" > /var/www/test.com/public_html/index.html
推荐放在:
/etc/httpd/conf.d/
新建文件:
vim /etc/httpd/conf.d/example.conf
内容示例:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog /var/log/httpd/example.com-error.log
CustomLog /var/log/httpd/example.com-access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName test.com
DocumentRoot /var/www/test.com/public_html
</VirtualHost>
httpd -t
systemctl restart httpd
修改本地 hosts 文件:
# Windows: C:\Windows\System32\drivers\etc\hosts
# Linux/macOS: /etc/hosts
添加:
服务器IP example.com
服务器IP test.com
浏览器访问即可。
vim /etc/httpd/conf/httpd.conf
确保有:
Listen 80
Listen 8080
vim /etc/httpd/conf.d/port.conf
<VirtualHost *:80>
DocumentRoot /var/www/port80
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot /var/www/port8080
</VirtualHost>
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
✅ 403 Forbidden
chown -R apache:apache /var/www
chmod -R 755 /var/www
✅ SELinux 导致无法访问
setsebool -P httpd_read_user_content 1
# 或
setenforce 0 # 临时关闭(不推荐生产)
✅ 配置不生效
conf.d/*.confhttpd -t 无报错如果你告诉我:
我可以直接给你一套可复制的完整配置。