apache+虚拟主机

发布于:2025-08-13 ⋅ 阅读:(20) ⋅ 点赞:(0)

apache+虚拟主机

Apache(Apache HTTP Server)是一款广泛使用的开源 Web 服务器软件,而虚拟主机是 Apache 的一项核心功能,允许在同一台服务器上托管多个网站(域名),共享服务器的 IP 地址和硬件资源,无需为每个网站单独配置物理服务器

虚拟主机的核心原理

通过区分不同的域名(或 IP 地址、端口),Apache 可将请求转发到对应的网站目录,使多个网站在同一服务器上独立运行,用户访问时感知不到它们共享服务器

虚拟主机的两种主要类型

  1. 基于域名的虚拟主机(最常用)
    • 多个域名绑定到同一服务器 IP,Apache 通过请求头中的Host字段(即访问的域名)识别对应的网站
    • 示例:www.siteA.comwww.siteB.com都指向服务器 IP 192.168.1.100,Apache 根据访问的域名分别返回/var/www/siteA/var/www/siteB目录下的内容
  2. 基于 IP 的虚拟主机
    • 服务器配置多个 IP 地址,每个 IP 对应一个网站,Apache 通过请求的目标 IP 地址区分网站
    • 需为服务器绑定多个 IP,适用于需要独立 IP 的场景(如早期 SSL 证书部署)

通过虚拟主机,Apache 能高效支持中小型网站部署,是 Web 服务器多站点托管的标准方案

首先配置yum仓库:

[root@syf ~]# cd /etc/yum.repos.d/
[root@syf yum.repos.d]# ls
qaq.repo
[root@syf yum.repos.d]# rm -rf *
[root@syf yum.repos.d]# vim ovo.repo
[qvq]
name=qvq1
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@syf yum.repos.d]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only

安装httpd软件包:

![屏幕截图 2025-08-06 192522](d:\Users\34734\Desktop\系统\图片\屏幕截图 2025-08-06 192522.png)[root@syf ~]# yum -y install httpd
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-88.el7.centos will be installed
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================
 Package     Arch         Version                     Repository
                                                                 Size
======================================================================
Installing:
 httpd       x86_64       2.4.6-88.el7.centos         qvq       2.7 M

Transaction Summary
======================================================================
Install  1 Package

Total download size: 2.7 M
Installed size: 9.4 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : httpd-2.4.6-88.el7.centos.x86_64                   1/1 
  Verifying  : httpd-2.4.6-88.el7.centos.x86_64                   1/1 

Installed:
  httpd.x86_64 0:2.4.6-88.el7.centos                                  

Complete!
[root@syf ~]# systemctl restart httpd
[root@syf ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@syf ~]# systemctl restart firewalld
[root@syf ~]# systemctl disable firewalld
[root@syf ~]# setenforce 0

在这里插入图片描述

接下来通过另一台主机内浏览器来访问主机2的ID地址

可以看到能访问测试网页

在这里插入图片描述

在这里插入图片描述

[root@syf3 ~]# nslookup 
> syf2.example.com
Server:		114.114.114.114
Address:	114.114.114.114#53

Non-authoritative answer:
*** Can't find syf2.example.com: No answer
> 
[root@syf3 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
...
DNS1=192.168.100.10
...
[root@syf3 ~]# systemctl restart network
[root@syf3 ~]# nslookup 
> syf2.example.com
Server:		192.168.100.10
Address:	192.168.100.10#53

Non-authoritative answer:
*** Can't find syf2.example.com: No answer
> 

回到DNS做正向解析:

[root@syf ~]# cd /var/named/
[root@syf named]# ls
chroot   data     named.ca     named.localhost  ovo.com
com.ovo  dynamic  named.empty  named.loopback   slaves
[root@syf named]# vim ovo.com
$TTL 1D
@       IN SOA  shenyifeng.example.com. root.example.com. (
                                2025081101      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      shenyifeng.example.com.
shenyifeng IN A 192.168.100.10
lisi       IN A 192.168.100.10
chenyu2    IN A 192.168.100.20
...
[root@syf named]# systemctl restart named

然后再回到客户端:

[root@syf3 ~]# nslookup 
> syf2.example.com
Server:		192.168.100.10
Address:	192.168.100.10#53

Name:   syf2.example.com
Address:  192.168.100.20
> 

在这里插入图片描述

[root@syf2 ~]# cd /var/www/html/
[root@syf2 html]# ls
[root@syf2 html]# echo "welcome to luoqi" > index.html
[root@syf2 html]# ls
index.html
[root@syf2 html]# cat index.html
welcome to luoqi

刷新一下

在这里插入图片描述

网页是默认放在/var/www/html/

也可以换位置

[root@syf2 ~]# mkdir /html
[root@syf2 ~]# cd /html/
[root@syf2 html]# echo syf > index.html
[root@syf2 html]# cat index.html
syf

如果想查看文件内容,需要改配置文件

[root@syf2 ~]# cd /etc/httpd
[root@syf2 httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run
[root@syf2 httpd]# cd conf
[root@syf2 conf]# ls
httpd.conf  magic
[root@syf2 conf]# vim httpd.conf 
...
DocumentRoot "/html"

#
# Relax access to content within /var/www.
#
<Directory "/html">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>
...
[root@syf2 conf]# systemctl restart httpd

刷新一下

在这里插入图片描述

在这里插入图片描述

改端口:

[root@syf2 conf]# vim httpd.conf 
...
Listen 8080
...
[root@syf2 conf]# systemctl restart httpd

在这里插入图片描述

相同IP,不同的端口

相同的端口,不同的IP

相同的IP和端口,不同FQDN

先恢复到最开始的

[root@syf2 conf]# vim httpd.conf 
...
Listen 8080
...
DocumentRoot "/var/www/html"

#
# Relax access to content within /var/www.
#
<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>
...
[root@syf2 conf]# systemctl restart httpd

在这里插入图片描述

syf /var/www/syf/index.html----syf

qvq /var/www/syf/index.html----qvq

[root@syf2 ~]# cd /var/www/
[root@syf2 www]# ls
cgi-bin  html
[root@syf2 www]# mkdir syf
[root@syf2 www]# mkdir qvq
[root@syf2 www]# echo syf > syf/index.html
[root@syf2 www]# echo qvq > qvq/index.html

网页创建好后,实现访问网页

相同IP,不同的端口

改虚拟主机的配置文件,需要先把虚拟主机配置的文件复制过来

![屏幕截图 2025-08-12 162714](d:\Users\34734\Desktop\屏幕截图 2025-08-12 162714.png)[root@syf2 ~]# cd /etc/httpd/
[root@syf2 httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run
[root@syf2 httpd]# cd conf.d/
[root@syf2 conf.d]# ls
autoindex.conf  README  userdir.conf  welcome.conf
[root@syf2 conf.d]# cd
[root@syf2 ~]# find / -name *vhost*.conf
/usr/share/doc/httpd-2.4.6/httpd-vhosts.conf
[root@syf2 ~]# cp -p /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/
[root@syf2 ~]# cd -
/etc/httpd/conf.d
[root@syf2 conf.d]# ls
autoindex.conf  httpd-vhosts.conf  README  userdir.conf  welcome.conf
[root@syf2 conf.d]# vim httpd-vhosts.conf 
...
<VirtualHost 192.168.100.20:80>
    DocumentRoot "/var/www/syf"
</VirtualHost>

Listen 8080
<VirtualHost 192.168.100.20:8080>
    DocumentRoot "/var/www/qvq"
</VirtualHost>
[root@syf2 conf.d]# systemctl restart httpd

在这里插入图片描述

在这里插入图片描述
相同的端口,不同的IP

[root@syf2 conf.d]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
...
ONBOOT=yes
IPADDR=192.168.100.20
PREFIX=24
IPADDR1=192.168.100.200
PREFIX1=24
GATEWAY=192.168.100.254
DNS1=114.114.114.114
...
[root@syf2 conf.d]# systemctl restart network
[root@syf2 conf.d]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:86:4f:27 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.20/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.100.200/24 brd 192.168.100.255 scope global secondary noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::a1f3:8473:ead:c9b9/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:f1:60:ee brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:f1:60:ee brd ff:ff:ff:ff:ff:ff

接下来改虚拟主机配置文件

[root@syf2 conf.d]# vim httpd-vhosts.conf 
...
<VirtualHost 192.168.100.20:80>
    DocumentRoot "/var/www/syf"
</VirtualHost>

<VirtualHost 192.168.100.200:80>
    DocumentRoot "/var/www/qvq"
</VirtualHost>
[root@syf2 conf.d]# systemctl restart httpd

启动后进行测试访问

在这里插入图片描述

在这里插入图片描述

相同的IP和端口,不同FQDN

syf.example.com

qvq.example.com

先到DNS写入过来

[root@syf ~]# cd /var/named/
[root@syf named]# ls
chroot   data     named.ca     named.localhost  ovo.com
com.ovo  dynamic  named.empty  named.loopback   slaves
[root@syf named]# vim ovo.com
$TTL 1D
@       IN SOA  shenyifeng.example.com. root.example.com. (
                                2025081101      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      shenyifeng.example.com.
shenyifeng IN A 192.168.100.10
lisi       IN A 192.168.100.10
chenyu2    IN A 192.168.100.20
syf        IN A 192.168.100.20
qvq        IN A 192.168.100.20
[root@syf named]# systemctl restart named
[root@syf2 ~]# nslookup 
> 192.168.100.10
^C
[root@syf2 ~]# nslookup 
> syf.example.com
Server:		192.168.100.10
Address:	192.168.100.10#53

Name:	syf.example.com
Address: 192.168.100.20
> qvq.example.com
Server:		192.168.100.10
Address:	192.168.100.10#53

Name:	qvq.example.com
Address: 192.168.100.20
> 
[root@syf2 ~]# cd /etc/httpd/
[root@syf2 httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run
[root@syf2 httpd]# cd conf.d/
[root@syf2 conf.d]# vim httpd-vhosts.conf    //复制修改,不动模版
...
<VirtualHost 192.168.100.20:80>
    DocumentRoot "/var/www/syf"
    ServerName syf.example.com
</VirtualHost>

<VirtualHost 192.168.100.20:80>
    DocumentRoot "/var/www/qvq"
    ServerName qvq.example.com
</VirtualHost>
[root@syf2 conf.d]# systemctl restart httpd

在这里插入图片描述

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到