Linux之虚拟主机功能

目录

虚拟主机功能

概述

基于 IP 地址的虚拟主机

原理

案例 --- 增加多个IP地址,实现基于不同IP地址的虚拟主机功能

基于端口号的虚拟主机

原理

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

基于域名的虚拟主机

原理

域名解析

案例 --- 使用2个域名建立虚拟主机网站


虚拟主机功能

概述

        如果每台运行 Linux 系统的服务器上只能运行一个网站,那么人气低、流量小的草根站长就要被迫承担着高昂的服务器租赁费用了,这显然也会造成硬件资源的浪费。在虚拟专用服务器(Virtual Private Sever,VPS)与云计算技术诞生以前,IDC 服务供应商为了能够更充分地利用服务器资源,同时也为了降低购买门槛,于是纷纷启用了虚拟主机功能

        利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服务器”。但是,该技术无法实现目前云主机技术的硬件资源隔离

        Apache 的虚拟主机功能是服务器基于用户请求的不同 IP 地址、主机域名或端口号,实现提供多个网站同时为外部提供访问服务的技术,也就是说用户请求的资源不同,最终获取到的网页内容也各不相同

基于 IP 地址的虚拟主机

原理

        如果一台服务器有多个IP地址,而且每个IP地址与服务器上部署的每个网站一一对应,当用户请求的IP地址不同,则会访问到不同网页,且每个网站都有一个独立的IP地址。(常用)

注意:

        主机必须有多个IP地址

案例 --- 增加多个IP地址,实现基于不同IP地址的虚拟主机功能

准备工作

[root@localhost ~]# yum  install  httpd  -y[root@localhost ~]# systemctl  start  httpd[root@localhost ~]# systemctl  enable   httpd[root@localhost ~]# setenforce 0

增加两个IP地址

[root@localhost /]# nmcli c modify ens160 +ipv4.addresses 192.168.149.150/24
[root@localhost /]# nmcli c modify ens160 +ipv4.addresses 192.168.149.151/24
[root@localhost /]# nmcli c reload 
[root@localhost /]# nmcli c up ens160 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@localhost /]# ip a

新建2个存储网页的目录,写入网页

[root@localhost /]# mkdir -p /www/ip150
[root@localhost /]# mkdir -p /www/ip151
[root@localhost /]# echo "ip150" > /www/ip150/index.html
[root@localhost /]# echo "ip151" > /www/ip151/index.html

修改配置文件,建立基于IP地址的虚拟主机

[root@localhost /]# vim /etc/httpd/conf/httpd.conf 
# 定位第一行,添加如下内容
<virtualhost  192.168.149.150>documentroot    /www/ip150    # 启动目录servername      192.168.149.150    # 设置域名,使用IP替代<directory  /www/ip150>allowoverride   none     # 设置启动目录权限require  all  granted</directory>
</virtualhost><virtualhost  192.168.149.151>documentroot    /www/ip151servername      192.168.149.151<directory  /www/ip151>allowoverride   nonerequire  all  granted</directory>
</virtualhost>

重启服务,测试

[root@localhost /]# curl 192.168.149.150  # 下载网页内容,显示到屏幕[root@localhost /]# curl 192.168.149.151

基于端口号的虚拟主机

原理

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

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

新建2个存储网页目录,并编写文件

[root@localhost ~]# mkdir -p /www/port{5111,5222}
[root@localhost ~]# cd /www/port5111/
[root@localhost port5111]# ls
[root@localhost port5111]# vim index.html
this is 5111
[root@localhost port5111]# cd /www/port5222/
[root@localhost port5222]# vim index.html
this is 5222

编辑主配置文件

[root@localhost port5222]# vim /etc/httpd/conf/httpd.conf
# 定位第一行,添加如下内容:
<virtualhost  192.168.149.128:5111>  # 格式:IP:端口号documentroot    /www/port5111servername      www.zy.com<directory  /www/port5111>allowoverride   nonerequire all granted</directory>
</virtualhost><virtualhost  192.168.149.128:5222>documentroot    /www/port5222servername      www.sxhkt.com<directory  /www/port5222>allowoverride   nonerequire all granted</directory>
</virtualhost>

# 定位第64行,修改监听端口号为:
Listen 5111
Listen 5222

 重启服务

[root@localhost /]# systemctl restart httpd

测试

打开Windows的浏览器,地址栏中输入192.168.149.128:5111或192.168.149.128:5222

基于域名的虚拟主机

原理

        当服务器无法给每个网站都分配一个独立的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域名服务器,依次类推)

案例 --- 使用2个域名建立虚拟主机网站

新建2个存储网页目录,然后编写数据

[root@localhost /]# mkdir -p /www/zy
[root@localhost /]# mkdir -p /www/sxhkt
[root@localhost /]# vim www/zy/index.html
this is zy
[root@localhost /]# vim www/sxhkt/index.html
this is sxhkt

手动配置IP地址与域名的映射关系

[root@localhost /]# vim /etc/hosts
192.168.149.128 www.zy.com
192.168.149.128 www.sxhkt.com

编辑主配置文件

<virtualhost  192.168.149.128>     documentroot    /www/zyservername      www.zy.com    # 域名必须正确<directory  /www/zy>allowoverride   nonerequire all granted</directory>
</virtualhost><virtualhost  192.168.149.128>documentroot    /www/sxhktservername      www.sxhkt.com<directory  /www/sxhkt>allowoverride   nonerequire all granted</directory>
</virtualhost>

 重启服务,测试

[root@localhost /]# systemctl restart httpd

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis学习|注解开发、lombok

1.使用注解开发 无需再编写相应的Mapper.xml文件&#xff0c;直接将sql用注解的形式写在Mapper接口的对应方法上即可。 然后因为没有xml文件,所以要在mybatis-config.xml核心配置文件中注册这个Mapper接口&#xff0c;而不用去注册之前的Mapper.xml&#xff0c;这里其实如果用…

【leetcode 力扣刷题】字符串匹配之经典的KMP!!!

字符串子串匹配相关 28. 找出字符串中第一个匹配项的下标暴力求解KMP 459. 重复的子字符串暴力求解在SS中找S 以下是能用KMP求解的算法题&#xff0c;KMP是用于字符串匹配的经典算法【至今没学懂………啊啊啊】 28. 找出字符串中第一个匹配项的下标 题目链接&#xff1a;28. 找…

centos7快速修改密码

centos7快速修改密码 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.命令 #第一种&#xff0c;我经常用这个&#xff0c;这个不行了&#xff0c;会用到第二个echo 用户名:密码 | sudo chpasswd #例如下面 echo root:yegoo123 | chpasswd#第二种echo 密码|passwd --st…

Nexus仓库介绍以及maven deploy配置

一 、Nexus仓库介绍 首先介绍一下Nexus的四个仓库的结构&#xff1a; maven-central 代理仓库&#xff0c;代理了maven的中央仓库&#xff1a;https://repo1.maven.org/maven2/&#xff1b; maven-public 仓库组&#xff0c;另外三个仓库都归属于这个组&#xff0c;所以我们的…

华为云新生代开发者招募

开发者您好&#xff0c;我们是华为2012UCD的研究团队 为了解年轻开发者的开发现状和趋势 正在邀请各位先锋开发者&#xff0c;与我们进行2小时的线上交流&#xff08;江浙沪附近可线下交流&#xff09; 聊聊您日常开发工作中的产品使用需求 成功参与访谈者将获得至少300元京…

[Linux]进程程序替换

[Linux]进程程序替换 文章目录 [Linux]进程程序替换进程程序替换的意义见一见进程程序替换进程程序替换的原理进程程序替换中的写时拷贝介绍进程程序替换接口 进程程序替换的意义 Linux系统下使用fork系统函数创建子进程后&#xff0c;子进程只能执行继承的部分父进程代码&…

java对象创建的过程

1、检查指令的参数是否能在常量池中定位到一个类的符号引用 2、检查此符号引用代表的类是否已被加载、解析和初始化过。如果没有&#xff0c;就先执行相应的类加载过程 3、类加载检查通过后&#xff0c;接下来虚拟机将为新生对象分配内存。 4、内存分配完成之后&#xff0c;…

UART串口Shell软硬件模型分析总结

文章目录 层次一、最底层逻辑配置交互----如何从Uart硬件读写单个字节数据层次二、抽象串口软件模块交互----基于串口对接输入输出流 和 Printf适配层次三、类似Shell封装抽象交互----基于串口交互命令行界面&#xff08;命令解析、补全、修改、记录&#xff09;case1 依次输入…

Java-泛型

文章目录 Java泛型什么是泛型&#xff1f;在哪里使用泛型&#xff1f;设计出泛型的好处是什么&#xff1f;动手设计一个泛型泛型的限定符泛型擦除泛型的通配符 结论 Java泛型 什么是泛型&#xff1f; Java泛型是一种编程技术&#xff0c;它允许在编译期间指定使用的数据类型。…

(15)线程的实例认识:同步,异步,并发,并发回调,事件,异步线程,UI线程

参看&#xff1a;https://www.bilibili.com/video/BV1xA411671D/?spm_id_from333.880.my_history.page.click&vd_source2a0404a7c8f40ef37a32eed32030aa18 下面是net framework版本 一、文件构成 1、界面如下。 (1)同步与异步有什么区别&#xff1f; …

零基础学Python:元组(Tuple)详细教程

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 Python的元组与列表类似&#xff0c; 不同之处在于元组的元素不能修改, 元组使用小括号,列表使用方括号, 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可 &#x1f447; &#x1f447; &#x1f447; 更…

安卓逆向 - Frida反调试绕过

本文仅供学习交流&#xff0c;只提供关键思路不会给出完整代码&#xff0c;严禁用于非法用途&#xff0c;谢绝转载&#xff0c;若有侵权请联系我删除&#xff01; 本文案例 app&#xff1a;5Lqs5LicYXBwMTEuMy4y 一、引言&#xff1a; Frida是非常优秀的一款 Hook框架&#…