当前位置: 首页 > java >正文

apache+虚拟主机

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 ResolutionDependencies Resolved======================================================================Package     Arch         Version                     RepositorySize
======================================================================
Installing:httpd       x86_64       2.4.6-88.el7.centos         qvq       2.7 MTransaction Summary
======================================================================
Install  1 PackageTotal download size: 2.7 M
Installed size: 9.4 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : 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#53Non-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#53Non-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      ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      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#53Name:   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 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::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 1000link/ether 00:0c:29:86:4f:27 brd ff:ff:ff:ff:ff:ffinet 192.168.100.20/24 brd 192.168.100.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet 192.168.100.200/24 brd 192.168.100.255 scope global secondary noprefixroute ens33valid_lft forever preferred_lft foreverinet6 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 1000link/ether 52:54:00:f1:60:ee brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000link/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      ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      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#53Name:	syf.example.com
Address: 192.168.100.20
> qvq.example.com
Server:		192.168.100.10
Address:	192.168.100.10#53Name:	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

在这里插入图片描述

在这里插入图片描述

http://www.xdnf.cn/news/17679.html

相关文章:

  • @(AJAX)
  • 使用Spring Boot对接欧州OCPP1.6充电桩:解决WebSocket连接自动断开问题
  • 日志管理--g3log
  • 前端项目一键换肤
  • IEEE 2025 | 重磅开源!SLAM框架用“法向量+LRU缓存”,将三维重建效率飙升72%!
  • 单例模式,动态代理,微服务原理
  • 操作系统1.6:虚拟机
  • 从原理到实践:一文掌握Kafka的消息生产与消费
  • 【bug 解决】串口输出字符乱码的问题
  • pdftk - macOS 上安装使用
  • 干货分享|如何从0到1掌握R语言数据分析
  • OpenAI传来捷报,刚刚夺金IOI,实现通用推理模型的跨越式突破
  • 如何实现PostgreSQL的高可用性,包括主流的复制方案、负载均衡方法以及故障转移流程?
  • 【接口自动化】-11-接口加密签名 全局设置封装
  • 容器安全扫描工具在海外云服务器环境的集成方法
  • Element用法---Loading 加载
  • npm、pnpm、yarn区别
  • 一周学会Matplotlib3 Python 数据可视化-绘制饼状图(Pie)
  • 前沿技术借鉴研讨-2025.8.12 (数据不平衡问题)
  • Web项目Excel文件处理:前端 vs. 后端,企业级如何选择?
  • 【3】Transformers快速入门:大语言模型LLM是啥?
  • 11-docker单机版的容器编排工具docker-compose基本使用
  • centos 7 如何安装 ZipArchive 扩展
  • MySQL 数据库表操作与查询实战案例
  • MySQL概述
  • 计算机网络:ovn数据通信都是用了哪些协议?
  • 集成电路学习:什么是URDF Model统一机器人描述格式模型
  • 智能合约执行引擎在Hyperchain中的作用
  • 北京-4年功能测试2年空窗-报培训班学测开-第七十三天-投递简历-[特殊字符][特殊字符]
  • LangChain 框架 Parser 讲解