web服务器 -web虚拟主机详解 与 Apache的连接保持与访问控制(理论加实验)

前言

虚拟机的发展历程
IDC数据中心托管–》 半虚架构 opem vz 资源共享–》带宽容易被侵占 --》linux XEN 半虚 QOS 限制带宽 --》 linux 6.0 KVM 全虚架构—》 openstack
虚拟web主机概述
在同一台服务器中运行多个web站点,其中每一个站点并不独立占用一台真正的计算机
通过虚拟web主机可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本
使用httpd可以非常方便的构建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的web站点

一:httpd支持的虚拟主机类型

1.1 基于域名

为每个虚拟主机使用不同的域名,但是其对应的IP地址使相同的
域名不同–IP相同,端口相同
基于域名是最为普遍的虚拟web主机类型

1.2 基于IP地址

为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同
这种方式需要为服务器配备多个网络接口,因此应用不是很广泛
IP不同,端口相同

1.3 基于端口

这种方式并不使用域名,IP地址来区分不同的站点内容,而是使用不同的TCP端口号
因此用户在浏览不同的虚拟站点时需要同时制定端口号才能访问
IP相同,端口不同

1.4 :添加虚拟主机配置格式

[root@localhost ~]# vim /etc/http/conf/xxx/vhost.conf
 1 <VirtualHost *:80>	'//针对本服务器所有IP地址'
  2   DocumentRoot "/var/www/html/xxx"	'//指定站点目录'
  3   ServerName www.xxx.com	'//指定域名'
  4   Errorlog "logs/www.xxx.com.error_log"	'//指定错误日志路径'
  5   Customlog "logs/www.xxx.com.custom_log" common	'//指定访问日志路径'
  6   <Directory> "/var/www/html">
  7         Require all granted		'//设置网页允许所有主机访问,也可以通过denied设置拒绝访问'
  8   </Directory>
  9 </VirtualHost>

二.通过实例配置体验三种虚拟主机方式

实验环境:一台centos7 设置双网卡 ,一台win10 ,两者绑定同一网卡
在这里插入图片描述

[root@localhost network-scripts]# cat ifcfg-ens3
ifcfg-ens33  ifcfg-ens37
[root@localhost network-scripts]# cat ifcfg-ens33
# Generated by parse-kickstart
DEVICE="ens33"
IPV6INIT="yes"
BOOTPROTO="static"
UUID="d595a57e-4d0d-43f4-a289-1f9dd2233f31"
ONBOOT="yes"
IPADDR=192.168.100.80
NETMSK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=192.168.100.80
[root@localhost network-scripts]#
[root@localhost network-scripts]# cat ifcfg-ens37
# Generated by parse-kickstart
DEVICE="ens37"
IPV6INIT="yes"
BOOTPROTO="static"
ONBOOT="yes"
IPADDR=192.168.100.110
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=192.168.100.110
[root@localhost network-scripts]#

在这里插入图片描述

2.1 基于域名的虚拟主机

虚拟主机基于域名

2.1.1 安装相关软件 DNS 与 apache

Yum install -y httpd   bind  
 [root@localhost ~]# vi /etc/named.conf

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

2.1.2创建区域数据文件

[root@localhost named]# cp -p named.localhost  one.com.zone
[root@localhost named]# vi one.com.zone
[root@localhost named]# cp  -p one.com.zone  two.com.zone

在这里插入图片描述

2.1.3自己创造httpd 配置子文件

[root@localhost conf]# pwd
/etc/httpd/conf
[root@localhost conf]# mkdir extra
[root@localhost conf]# vim vhost.conf
<VirtualHost *:80>       '//针对本服务器所有IP地址 80端口'
    DocumentRoot "/var/www/html/one"  //站点目录
    serverName www.one.com    //服务网页域名
    ErrorLog "logs/www.one.com.error_log"   //错误日志
    CustomLog "logs/www.one.com.access_log" common   //访问日志
    <Directory "/var/www/html">
      require all granted      // 设置网站的访问权限, 允许访问
    <Directory "/var/www/html">
      require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/html/two"
    serverName www.two.com
    ErrorLog "logs/www.two.com.error_log"
    CustomLog "logs/www.two.com.access_log" common
    <Directory "/var/www/html">
      require all granted
    </Directory>
</VirtualHost>

2.1.4 分别创建httpd 首页配置文件

[root@localhost named]# cd /var/www/html/
[root@localhost html]# ls
one  two
[root@localhost one]# cp -p /var/named/named.localhost  index.html
[root@localhost two]# cp -p /var/named/named.localhost  index.html

2.1.5 将之前自己创造的配置文件让HTTPD程序引用

vi /etc/httpd/conf/httpd.conf

在这里插入图片描述

2.1.6 用win10 虚拟机 访问测试,测试成功

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

2.2 基于端口的虚拟主机创建

2.2.1 修改配置子文件

------新增two02 配置,端口8080

vi /etc/httpd/conf/extra/vhost.conf
<VirtualHost *:80>
    DocumentRoot "/var/www/html/one"
    serverName www.one.com
    ErrorLog "logs/www.one.com.error_log"
    CustomLog "logs/www.one.com.access_log" common
    <Directory "/var/www/html">
      require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/html/two"
    serverName www.two.com
    ErrorLog "logs/www.two.com.error_log"
    CustomLog "logs/www.two.com.access_log" common
    <Directory "/var/www/html">
      require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "/var/www/html/two"
    serverName www.two.com
    ErrorLog "logs/www.two02.com.error_log"
    CustomLog "logs/www.two02.com.access_log" common
    <Directory "/var/www/html">
      require all granted
    </Directory>
</VirtualHost>

2.2.2 创建two02 的 http 首页配置文件

[root@localhost one]# cd /var/www
[root@localhost www]# cd html/
[root@localhost html]# mkdir two02
[root@localhost html]# cp -p /var/www/html/one/index.html  two02/
[root@localhost html]# cd two02/
[root@localhost two02]# ls
index.html
[root@localhost two02]# vi index.htm

在这里插入图片描述

[root@localhost two02]# vi /etc/httpd/conf/httpd.conf

在这里插入图片描述

2.2.3 查看监听端口

[root@localhost two02]# netstat -ntap | grep httpd
tcp        0      0 192.168.100.80:8080     0.0.0.0:*               LISTEN      80800/httpd
tcp        0      0 192.168.100.80:80       0.0.0.0:*               LISTEN      80800/httpd

2.2.4 使用win10 虚拟机测试

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

2.3 基于IP 地址构建虚拟主机

2.3.1首先修改httpd 配置子文件:

新增一台网卡对应one02

[root@localhost one02]# vi /etc/httpd/conf/extra/vhost.conf
<VirtualHost 192.168.100.80:80>
    DocumentRoot "/var/www/html/one"
    ErrorLog "logs/www.one.com.error_log"
    CustomLog "logs/www.one.com.access_log" common
    <Directory "/var/www/html">
      require all granted
    </Directory>
</VirtualHost>

<VirtualHost 192.168.100.110:80>
    DocumentRoot "/var/www/html/one02"
    ErrorLog "logs/www.one02.com.error_log"
    CustomLog "logs/www.one02.com.access_log" common
    <Directory "/var/www/html">
      require all granted
    </Directory>
</VirtualHost>

2.3.2 创建one02 的httpd 首页配置文件

 [root@localhost html]# mkdir one02
[root@localhost html]# cp -p /var/www/html/one/index.html one02/
[root@localhost html]# cd one02/
[root@localhost one02]# ls
index.html
[root@localhost one02]# vi index.html

在这里插入图片描述

2.3.3 修改http 主配置文件,添加监听端口

vi httpd.conf
 

在这里插入图片描述
测试端口

[root@localhost one02]# netstat -natp | grep httpd
tcp        0      0 192.168.100.110:80      0.0.0.0:*               LISTEN      81323/httpd
tcp        0      0 192.168.100.80:80       0.0.0.0:*               LISTEN      81323/httpd

2.3.4 使用win10访问测试 ,测试成功

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

三 .Apache的连接保持与访问控制

Apache HTTP Server 之所以受到众多企业的青睐,得益于其代码开源,跨平台,功能模块化,可灵活定制等诸多优点,其不仅性能稳定,在安全性方面的表现也十分出色
一:Apache配置详解

3.1:Apache连接保持

3.1.1:为什么要保持连接

HTTP协议是基于TCP协议之上的,在进行HTTP连接之前,要先进行TCP连接,每个TCP连接都要进行三次握手与四次挥手。建立与关闭连接对于HTTP协议而言会消耗很多的内存与CPU资源。
解决办法是HTTP连接保持。就是尽量地保持客户端的连接,通过一个TCP连接传送多个HTTP请求响应,对于客户端可以提高50%以上的响应时间,对于服务器可以降低建立与关闭连接时的资源消耗。

3.1.2:保持连接的方式

Apache连接保持相关参数
KeepAlive
是否打开连接保持,OFF关闭,ON打开
KeepAliveTimeout
一次连接多次请求之间的最大间隔时间,两次请求超过该时间连接断开
MaxKeepAliveRequests
一次连接能够传输的最大请求数量

3.2:Apache访问控制

3.2.1:Apache访问控制概述

作用
控制对网站资源的访问
为特定的网站目录添加访问授权
常用访问控制方式
客户机地址限制
用户授权限制

3.2.2:基于客户端地址的访问控制

使用Require配置项实现访问控制,按先后顺序限制

可用,,,配置段中

Require配置项的常见语法

Require all granted
Require all denied
Require local
Require [not] host <主机名或域名列表>
Require [not] ip <IP地址或网段列表>
'//使用not禁止访问时要将其置于<RequireAll></RequireAll>容器中,并在容器中指定相对应的限制策略'

3.3 限制主机 192.168.100.60 访问网站192.168.100.80 实验

3.3.1 修改子配置

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

3.3.2 已经访问不到页面了

另一个地址页面还是可以访问的,因为它没有被限制
在这里插入图片描述

3.4 设置登录用户名访问HTTP页面

创建用户认证数据库

命令基本格式
'//htpasswd命令是httpd自带的'
htpasswd -c /etc/httpd/conf/abc webadmin '//为用户webadmin创建密码文件'
New password:'//输入密码'
Re-type new password:'//重复输入密码'
cat  /etc/httpd/conf/abc
webadmin:加密密码

用户授权限制–添加用户授权配置
'//配置基本格式'

  <Directory "/var/www/html">
  AuthName "DocumentRoot"  '//受保护的领域名称'
  AuthType Basic		'//认证类型'
  AuthUserFile /etc/httpd/conf/qwe  '//用户认证账号文件'
  Require valid-user  '//要求通过认证才能访问'
  </Directory>

3.4.1 创建访问用户,及用户文件夹,设置用户密码

[root@localhost one02]# htpasswd  -c /etc/httpd/conf/pwd lisi
New password:
Re-type new password:
Adding password for user lisi

3.4.2 修改子配置文件

在这里插入图片描述

3.4.3 用lisi 登录测试

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

### 3.4.4 创建用户wangwu 并测试登录
[root@localhost ~]# htpasswd  /etc/httpd/conf/pwd  wangwu
New password:
Re-type new password:
Adding password for user wangwu
[root@localhost ~]#

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

3.5 设置会话保持时间600秒

vi httpd 

在这里插入图片描述

也可以放在HTTP子配置文件中

在这里插入图片描述
[root@localhost network-scripts]# systemctl restart httpd

©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页