温馨提示×

centos apache如何设虚拟

小樊
41
2026-09-27 03:09:53
栏目: 云计算

在 CentOS 上通过 Apache(httpd) 配置虚拟主机(Virtual Host),常见有两种方式:基于域名 和 基于端口。下面以 CentOS 7/8 + Apache(httpd) 为例说明。


一、基于域名的虚拟主机(最常用)

1. 安装 Apache

yum install httpd -y
systemctl start httpd
systemctl enable httpd

2. 创建网站目录

mkdir -p /var/www/site1
mkdir -p /var/www/site2

echo "site1" > /var/www/site1/index.html
echo "site2" > /var/www/site2/index.html

3. 创建虚拟主机配置文件

在 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>

4. 检查并重启 Apache

httpd -t
systemctl restart httpd

5. 本地测试(可选)

修改本地 hosts 文件:

192.168.1.100 www.site1.com
192.168.1.100 www.site2.com

浏览器访问:

http://www.site1.com
http://www.site2.com

二、基于端口的虚拟主机

1. 修改主配置监听端口

vi /etc/httpd/conf/httpd.conf

确保有:

Listen 80
Listen 8080

2. 配置虚拟主机

vi /etc/httpd/conf.d/port.conf
<VirtualHost *:80>
    DocumentRoot /var/www/site1
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot /var/www/site2
</VirtualHost>

3. 重启 Apache

systemctl restart httpd

三、SELinux 与防火墙(常见问题)

防火墙

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload

SELinux

如果页面打不开:

setsebool -P httpd_can_network_connect 1
restorecon -Rv /var/www

四、常见错误

  • 403 Forbidden:目录权限或 SELinux
  • DocumentRoot does not exist:路径写错
  • 域名不生效:未解析或 hosts 未配置

如果你用的是 CentOS Stream / Rocky / Alma 或需要 HTTPS(SSL)虚拟主机,我也可以继续补充。

0 踩