web服务之虚拟主机功能

news2024/12/23 13:11:51

华子目录

  • 概述
  • 基于IP地址的虚拟
    • 原理
    • 实验
  • 基于不同端口号的虚拟主机
    • 原理
    • 实验
  • 基于域名的虚拟主机
    • 原理
    • 域名解析
    • 实验

概述

  • 如果每台运行 Linux 系统的服务器上只能运行一个网站,那么人气低、流量小的草根站长就要被迫承担着高昂的服务器租赁费用了,这显然也会造成硬件资源的浪费。在虚拟专用服务器(Virtual Private Sever,VPS)与云计算技术诞生以前,IDC 服务供应商为了能够更充分地利用服务器资源,同时也为了降低购买门槛,于是纷纷启用了虚拟主机功能
  • 利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服务器”。但是,该技术无法实现目前云主机技术的硬件资源隔离
  • Apache虚拟主机功能是服务器基于用户请求的不同 IP 地址主机域名端口号,实现提供多个网站同时为外部提供访问服务的技术,也就是说用户请求的资源不同最终获取到的网页内容也各不相同

基于IP地址的虚拟

原理

  • 一台服务器有多个IP地址,而且每个IP地址与服务器上部署的每个网站一一对应,当用户请求的IP地址不同,则会访问到不同网页,且每个网站都有一个独立的IP地址。常用
  • 注意:主机必须有多个IP地址

实验

  • 增加多个IP地址,实现基于不同IP地址的虚拟主机功能
  • 第一步:准备工作
[root@server ~]# setenforce  0

[root@server ~]# systemctl stop firewalld

[root@server ~]# yum  install httpd  -y

[root@server ~]# systemctl start httpd

[root@server ~]# systemctl enable httpd
# 给网卡增加2个IP地址
[root@server ~]# nmcli c modify ens160 +ipv4.addresses 192.168.80.150/24
[root@server ~]# nmcli c modify ens160 +ipv4.addresses 192.168.80.151/24
[root@server ~]# nmcli c up ens160   # 注意:一定要激活才能使用IP进行ssh连接
_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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:9e:1d:25 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.80.129/24 brd 192.168.80.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.80.150/24 brd 192.168.80.255 scope global secondary noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.80.151/24 brd 192.168.80.255 scope global secondary noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe9e:1d25/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
[root@server ~]#
  • 第二步:新建2个存储网页的目录,写入2个网页文件
[root@server ~]# ll /www
ls: 无法访问 '/www': 没有那个文件或目录
[root@server ~]# ll /
总用量 28
dr-xr-xr-x.   2 root root    6  810  2021 afs
lrwxrwxrwx.   1 root root    7  810  2021 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 1110 23:40 boot
drwxr-xr-x   20 root root 3360  37 22:41 dev
drwxr-xr-x. 134 root root 8192  37 22:56 etc
drwxr-xr-x.   3 root root   20 1110 23:42 home
drwxr-xr-x    5 root root   56 123 14:04 index
lrwxrwxrwx.   1 root root    7  810  2021 lib -> usr/lib
lrwxrwxrwx.   1 root root    9  810  2021 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6  810  2021 media
drwxr-xr-x.   3 root root   18 1110 23:31 mnt
drwxr-xr-x.   2 root root    6  810  2021 opt
dr-xr-xr-x  354 root root    0  37 22:41 proc
dr-xr-x---.  13 root root 4096  37 22:53 root
drwxr-xr-x   45 root root 1180  37 22:53 run
lrwxrwxrwx.   1 root root    8  810  2021 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6  810  2021 srv
dr-xr-xr-x   13 root root    0  37 22:41 sys
drwxrwxrwt.  16 root root 4096  37 22:57 tmp
drwxr-xr-x.  12 root root  144 1110 23:25 usr
drwxr-xr-x.  21 root root 4096 123 14:00 var

[root@server ~]# mkdir -vp /www/ip150   # -p:逐级创建
mkdir: 已创建目录 '/www'
mkdir: 已创建目录 '/www/ip150'
[root@server ~]# mkdir -vp /www/ip151
mkdir: 已创建目录 '/www/ip151'
[root@server ~]# echo "ip150" > /www/ip150/index.html
[root@server ~]# echo "ip151" > /www/ip151/index.html
[root@server ~]# ll /www/ip150
总用量 4
-rw-r--r-- 1 root root 6  37 23:06 index.html
[root@server ~]# ll /www/ip151
总用量 4
-rw-r--r-- 1 root root 6  37 23:07 index.html
[root@server ~]#
  • 第三步:修改主配置文件,建立基于IP地址的虚拟主机
[root@server ~]# vim  /etc/httpd/conf/httpd.conf 
# 定位第一行,输入:
<virtualhost  192.168.80.150>
        documentroot  /www/ip150          # 启动目录
        <directory /www/ip150>            # 目录权限
                allowoverride   none
                require all granted      
        </directory>                      
        servername      192.168.80.150    # 服务器域名或ip地址
</virtualhost>


<virtualhost  192.168.80.151>
        documentroot  /www/ip151  #启动目录
        <directory /www/ip151>    #目录权限
                allowoverride   none
                require all granted
        </directory>
        servername      192.168.80.151  #服务器域名或IP地址
</virtualhost>
  • 第四步:重启服务使用curl测试使用浏览器进行访问
[root@server ~]# systemctl restart httpd
[root@server ~]# curl 192.168.80.150
ip150
[root@server ~]# curl 192.168.80.151
ip151

在这里插入图片描述
在这里插入图片描述

基于不同端口号的虚拟主机

原理

  • 基于端口号的虚拟主机功能,可以让用户通过一个IP地址不同端口号来访问不同的网站

实验

  • 基于不同端口的虚拟主机
  • 第一步:准备工作
[root@server ~]# setenforce  0

[root@server ~]# systemctl stop firewalld

[root@server ~]# yum  install httpd  -y

[root@server ~]# systemctl start httpd

[root@server ~]# systemctl enable httpd
  • 第二步:新建2个存储网页的目录,使用mobaxterm上传网页数据
[root@server ~]# ll /www
ls: 无法访问 '/www': 没有那个文件或目录
[root@server ~]# mkdir -vp /www/port{9527,9528}  
mkdir: 已创建目录 '/www'
mkdir: 已创建目录 '/www/port9527'
mkdir: 已创建目录 '/www/port9528'
[root@server ~]# ls /www
port9527  port9528

#使用mobaxterm上传网页数据

#查看是否上传成功
[root@server ~]# ls /www/port9527
compat  css  img  index.html  js
[root@server ~]# ls /www/port9528
CSS  img  index.html  js
  • 第三步:编辑主配置文件
#查看预设值的端口占用情况,如果未显示信息表示该端口未占用
[root@server ~]# netstat -anp | grep 9528
[root@server ~]# netstat -anp | grep 9527
[root@server ~]#

[root@server ~]#  vim  /etc/httpd/conf/httpd.conf 
Listen  80
listen  9527        # 设置新监听端口号
listen  9528        # 设置新监听端口号
<virtualhost  192.168.80.129:9527>
        documentroot  /www/port9527
        servername      "www.zy.com"
        <directory  /www/port9527>
                allowoverride  none
                require all granted
        </directory>
</virtualhost>

<virtualhost  192.168.80.129:9528>
        documentroot  /www/port9528
        servername      "www.index.com"
        <directory  /www/port9528>
                allowoverride  none
                require all granted
        </directory>
</virtualhost>
  • 第四步:重启服务并测试
[root@server ~]# systemctl restart httpd
# 浏览器中输入192.168.80.129:9527  测试访问,注意:冒号为英文冒号

在这里插入图片描述
在这里插入图片描述

基于域名的虚拟主机

原理

  • 当服务器无法给每个网站都分配一个独立的IP地址时,可以通过用户请求的域名实现不同域名传输不同的网页数据

域名解析

  • 功能:域名< == >IP地址
  • 浏览器如何通过域名去查询URL对应的IP(对应服务器地址):
    • 浏览器缓存浏览器会按照一定的频率缓存DNS记录
    • 操作系统缓存:如果浏览器缓存找不到需要的DNS记录,那就去操作系统中的hosts文件找。hosts是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库",当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址一旦找到,系统会立即打开对应网页如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。
    • windows下的hosts文件路径:C:\Windows\System32\drivers\etc\hosts
    • Linux下的hosts文件路径:/etc/hosts
    • 路由缓存:路由器也有DNS缓存
    • ISP的DNS服务器ISP是互联网服务提供商(Internet Service Provider)的简称,ISP有专门的DNS服务器应对DNS查询请求
    • 根服务器ISP的DNS服务器还找不到的话,它就会向根服务器发出请求,进行查询(DNS服务器先问根域名服务器.com域名服务器的IP地址,然后再问.com域名服务器,依次类推)

实验

  • 基于不同域名的虚拟主机
  • 第一步:准备工作
[root@server ~]# setenforce  0

[root@server ~]# systemctl stop firewalld

[root@server ~]# yum  install httpd  -y

[root@server ~]# systemctl start httpd

[root@server ~]# systemctl enable httpd
  • 第二步:新建2个存储网页数据的目录,使用mobaxterm上传网页数据
[root@server ~]# mkdir -vp /www/zy
mkdir: 已创建目录 '/www'
mkdir: 已创建目录 '/www/zy'
[root@server ~]# mkdir -vp /www/sxhkt
mkdir: 已创建目录 '/www/sxhkt'

#使用mobaxterm上传网页数据

#查看是否上传成功
[root@server ~]# ls /www/zy
compat  css  img  index.html  js
[root@server ~]# ls /www/sxhkt
css  dingban.mp4  img  index.html  js  temp
  • 第三步:手动配置Linux的hosts映射
[root@server ~]# vim  /etc/hosts   # 添加如下2行

192.168.80.129  www.zy.com

192.168.80.129  www.sxhkt.com
  • 第四步:编辑httpd主配置文件
[root@server ~]# vim  /etc/httpd/conf/httpd.conf 
<virtualhost  192.168.80.129>
        documentroot  /www/zy        
        <directory /www/zy>
                allowoverride   none
                require all granted
        </directory>
        servername      "www.zy.com"   # 注意网址
</virtualhost>


<virtualhost  192.168.80.129>
        documentroot  /www/sxhkt
        <directory /www/sxhkt>
                allowoverride   none
                require all granted
        </directory>
        servername      "www.sxhkt.com"
</virtualhost>
  • 第五步:重启服务并测试
[root@server ~]# systemctl restart httpd

#浏览器中输入域名访问 (在哪个主机上做的域名,就在哪个主机上进行测试,如果win和Linux都做了,则直接在win中的浏览器上进行测试)

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1498730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Python制作自己的wheel文件

平时自己利用Python制作一个个小工具后想分享给别人&#xff0c;但又嫌分享一堆项目代码很麻烦&#xff0c;那么你可以考虑将自己的项目打包成一个wheel文件&#xff0c;别人拿到文件后只需pip install安装即可使用&#xff0c;非常方便。 在上一篇博文中&#xff0c;利用nvid…

01、python_爬虫的相关概念

一、什么是爬虫&#xff1f; 爬虫是网络爬虫的简称&#xff0c;指的是一种自动化程序&#xff0c;用于在互联网上抓取信息。爬虫的核心工作包括爬取网页、解析数据和存储数据。 通俗来说就是&#xff1a;通过一个程序&#xff0c;根据url(http://taobao.com)进行爬取网页&…

第九届多媒体系统和信号处理国际会议(ICMSSP 2024)即将召开!

2024年第九届多媒体系统和信号处理国际会议&#xff08;ICMSSP 2024&#xff09;将在5月24-26日在泰国曼谷举行。ICMSSP 2024旨在展示多媒体系统和信号处理等相关主题的最新研究和成果&#xff0c;为不同领域的专家代表提供了面对面交流新想法以及应用经验的机会&#xff0c;建…

从零搭建React18.2+ReactRoute6.22+TS5+RTK2.2搭配antd5+antd-style书写All in Js完整体验项目规范

1. 使用CRA创建项目 全局设置npm淘宝镜像源 npm config set registry https://registry.npmmirror.com -g使用最新版create-react-app初始化项目结构 npx create-react-app custom-template --template typescript初始化项目之后在package.json文件中配置使用node>18.0.0…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:CalendarPicker)

日历选择器组件&#xff0c;提供下拉日历弹窗&#xff0c;可以让用户选择日期。 说明&#xff1a; 该组件从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 CalendarPicker(options?: CalendarOptions) …

构建读写分离的数据库集群

目录 1. 基础环境配置 &#xff08;1&#xff09;修改主机名 &#xff08;2&#xff09;编辑hosts文件 &#xff08;3&#xff09;配置Yum安装源 &#xff08;4&#xff09;安装JDK环境 2. 部署MariaDB主从数据库集群服务 &#xff08;1&#xff09;安装MariaDB服务 &a…

用readproc函数读取进程的状态

概要&#xff1a; 本篇演示用readproc函数读取进程的状态 libprocps库的安装参考笔者的文章readproc.h-CSDN博客 演示所用的系统是Ubuntu22.04 一、代码 #include<stdio.h> #include<stdlib.h> #include<proc/readproc.h> int main() {struct PROCTAB *…

清空 Redis 中所有的 key value

我们先登录 redis 服务 然后 输入 keys *这样 就可以查询到内部所有的key 然后 执行 FLUSHDB清空全部键值对 这里 OK后 我们重写查询 keys *显然 数据就被清空了

Redis几大数据类型

使用场景&#xff1a; Redis 数据类型及应用场景https://segmentfault.com/a/1190000012212663 Redis的五种常用数据类型在实际应用中有丰富的使用场景&#xff1a; 字符串&#xff08;String&#xff09; 缓存&#xff1a;存储经常查询但不频繁修改的数据&#xff0c;如网页…

java-新手笔记-(File篇)

1.File File类提供了许多方法来操作文件和目录&#xff0c;包括创建、查找、删除文件等 file常见功能 1.增 创建文件 exits() 判断文件是否存在 createNewFile() 创建新文件 二个搭配一起.判断文件是否存在来创建文件(需要使用try/catch处理异常情况) File file new File(&…

Java 学习和实践笔记(30):继承树的追溯

如上图所示&#xff0c;在上图中&#xff0c; 在最下面的子类Husky(哈士奇&#xff09;中&#xff0c;假定要查找一个变量或者方法h, 那么其查找顺序属性/方法查找顺序是这样的&#xff1a; 首先&#xff0c;查找当前类中有没有属性h 如果没有&#xff0c;则依次往上上溯每个…

SkyEye:助力飞行器状态控制系统仿真

飞行器与常见的航天器一样&#xff0c;属于安全关键领域的大型复杂设备&#xff0c;对安全性、可靠性有着极高的要求。为保证稳定飞行&#xff0c;需要对目标对象进行实时跟踪&#xff0c;通过发出正确的修正偏差指令来操纵飞行器改变飞行姿态&#xff0c;因此对飞行器状态控制…

[Buuctf] [MRCTF2020] Xor

运行 1.查壳 32位exe文件&#xff0c;没有壳 2.用32位IDA打开 找到main函数&#xff0c;F5查看伪代码&#xff0c;但是这里会弹出一个窗口 函数分析失败&#xff01;&#xff01; 这里我在看别人的题解时发现一种玄学方式解决了这个问题 窗口里面弹出了一个地址401095&…

2024年1月京东牛奶乳品行业分析:TOP10品牌销量及销额排行榜

鲸参谋监测的京东平台1月份牛奶乳品市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台显示&#xff0c;今年1月份&#xff0c;京东平台上牛奶乳品的销量约1600万件&#xff0c;环比上个月增长87%&#xff0c;同比去年下滑16%&#xff1b;销售额约12亿元&#xff0c;…

部署SpringBoot项目

方案一&#xff1a;纯手工部署 1&#xff0c;购买一台云服务器 这里我使用腾讯云&#xff0c;推荐Centos8/Centos7.6 2&#xff0c;安装springBoot项目所需要的环境 1&#xff0c;数据库单独安装在另一台服务器上&#xff0c;只需要修改IP地址即可 2&#xff0c;安装jdk yum…

MyBatis的#{}和${}:安全与灵活并存的SQL之道

MyBatis的#{}和${}&#xff1a;安全与灵活并存的SQL之道 MyBatis是一款广泛使用的Java持久化框架&#xff0c;提供了强大的SQL映射和数据库操作功能。在编写MyBatis的SQL语句时&#xff0c;我们经常会遇到#{}和${}两种不同的占位符语法。本文将详细解析#{}和${}的区别以及它们在…

微信小程序uniapp+django+python的酒店民宿预订系统ea9i3

Android的民宿预订系统设计的目的是为用户提供民宿客房、公告信息等方面的平台。 与PC端应用程序相比&#xff0c;Android的民宿预订系统的设计主要面向于民宿&#xff0c;旨在为管理员和用户、商家提供一个Android的民宿预订系统。用户可以通过Android及时查看民宿客房等。 An…

appium解锁android真机系统的屏幕

在使用appium进行app自动化操作的过程中&#xff0c;经常遇到的第一个难题就是如何解锁系统屏幕&#xff0c;也就是亮屏解锁。 实际上解决办法如下&#xff1a;在desired_capabilities中增加两个参数unlockType和unlockKey&#xff0c;类似的示例代码如下&#xff1a; desire…

blast原理与使用技巧,最全最详细

BLAST 序列比对 在生物信息学领域&#xff0c;序列比对是一项基础而关键的任务。它帮助研究人员识别基因、理解蛋白质功能&#xff0c;并揭示物种之间的进化关系。 本文旨在介绍BLAST&#xff08;Basic Local Alignment Search Tool&#xff09;的原理及其不同变体&#xff0c;…

支小蜜校园防欺凌报警系统如何识别霸凌

校园霸凌给受害者带来了深重的心理和身体伤害。为了有效应对这一问题&#xff0c;校园防欺凌报警系统应运而生&#xff0c;其核心技术在于如何准确、迅速地识别霸凌行为。那么校园防欺凌报警系统是如何识别霸凌的呢&#xff1f; 图像识别技术 这些系统利用高清摄像头捕捉校园…