Httpd访问控制、虚拟主机、网页压缩优化

本实验为前次博客的扩展,有兴趣可以参考HTTP服务安装与配置

HTTPD访问控制、虚拟主机、网页压缩优化

HTTPD访问控制

  • 访问控制:限制客户端可以访问的资源,或限制其不能访问某些资源

  • 分类
    • 基于来源地址(常用)
    • 基于账号
      • basic基于虚拟账号认证(明文传输需要进行加密)
      • digest信息摘要认证
  • 实现方式

    • <Directory ""> 内部指令只对Directory容器生效,完成控制

    • <Files ""> 针对某个文件进行控制,而非路径名称,必须只写文件名

    • <FilesMatch ""> 基于正则表达式模式进行控制(调用正则表达式引擎,效率低)
      • 例如:<FilesMatch ".(gif|jp?g|png)$">
    • <Location ""> 此容器需单独定义,不要定义在Directory之中。

HTTPD访问控制的实现

  • 实验环境

    • 服务端:centos6.10 192.168.10.110
    • 客户端:centos6.10 192.168.10.110
    • 客户端:windows10 192.168.10.1
  • 基于来源地址的访问控制实现

    1. 禁止来自192.168.10.111的主机访问根,修改主配置文件如下
      image-20191029134903370
      image-20191029135231996

    2. 禁止来自10.10.86.68的主机访问sub子目录,修改配置文件如下
      image-20191029140321040

    3. 重启服务
      image-20191029135738403

    4. 由于SeverName未指定所以出现异常信息,修改ServerName属性并重启
      image-20191029140010108
      image-20191029140028161

    5. 192.168.101.win10客户端访问测试
      image-20191029140154639
      image-20191029140357839

    6. 192.168.10.111 centos6 客户机测试(为了便于观察,使用lynx工具进行测试,需要先安装该工具)
      image-20191029140644568
      image-20191029141017139
      image-20191029140909013
      image-20191029141031840
      image-20191029141047198
      注:使用q退出

#/etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
#Options 选项
    #Indexes 若不存在索引页面则录下内容以列表样式列出
    #FollowSymLinks 目录下启用显示符号(软)链接文件 
    AllowOverride None 
    Order allow,deny #指定规则,先检查allow后检查deny
    Allow from all #允许所有主机
    Deny from 192.168.10.111 #拒绝192.168.10.111,覆盖前面设定的允许
</Directory>
<Directory "/var/www/html/sub">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    Deny from 192.168.10.1
</Directory>
  • 基于虚拟账户的访问控制实现
  1. 创建虚拟用户的目录,并添加测试主页
    image-20191029150148733

  2. 使用htpasswd命令添加虚拟用户,指定用户存放文件为/etc/httpd/conf.d/.htpasswdimage-20191029190711844

    注:-m 表示md5加密,-c自动创建账户,-s使用sha1加密,-D 删除指定账户

  3. 修改主配置文件如下:
    image-20191029150032565

  4. 重启服务
    image-20191029145710691

  5. win客户端访问
    image-20191029150717464
    image-20191029150320415

#/etc/httpd/conf/httpd.conf
<Directory "/var/www/html/httpd1"> #网站所在路径
    Options Indexes #使用的选项
    AllowOverride None #是否允许权限覆盖
    AuthType Basic #认证类型 虚拟用户认证
    AuthName "welcome" #认证的名称,提示信息
    AuthUserFile "/etc/httpd/conf.d/.htpasswd" #虚拟用户存放文件路径
    Require valid-user #允许访问的用户,valid-user有效用户 或指定用户名
</Directory>

虚拟主机

  • 实验环境

    • 服务端1:centos6.10 192.168.10.110 192.168.10.109
    • 客户端:centos6.10 192.168.10.110
    • 客户端:windows10 192.168.10.1
  • 分类

    • 基于IP的虚拟主机
    • 基于port的虚拟主机
    • 基于域名的主机
      注:三种虚拟主机可混合使用
  • 基于IP的虚拟主机的实现

    1. 为虚拟服务器主机添加网卡,配置IP
      image-20191029151753875
      image-20191029151851025
      image-20191029151936851
      image-20191029152005770
      image-20191029152429462
      image-20191029152456498
      image-20191029152521988
    2. 修改主配置文件如下
      image-20191029153004364
      image-20191029155107044
    3. 创建指定的目录并添加主页
      image-20191029155324549
    4. 重启服务
      image-20191029155348939
    5. 测试
      image-20191029155451022
      image-20191029155433025
#/etc/httpd/conf/httpd.conf
<VirtualHost 192.168.10.109:80> #虚拟主机的ip及端口
    ServerAdmin [email protected] #管理员邮箱
    DocumentRoot /www/docs/lg1 #网站根目录
    ServerName www.lg1.com #服务器名
    ErrorLog logs/lg1-error_log #错误日志存放位置
    CustomLog logs/lg1-access_log #访问记录日志存放位置
</VirtualHost>
<VirtualHost 192.168.10.110:80>
    ServerAdmin [email protected]
    DocumentRoot /www/docs/lg2
    ServerName www.lg2.com
    ErrorLog logs/lg2-error_log
    CustomLog logs/lg2-access_log common
</VirtualHost>
  • 基于端口的虚拟主机
  1. 修改主配置文件如下(要将上一个实验配置的内容注释或删除)
    image-20191029162741184
    image-20191029160301484
    image-20191029161331584
  2. 创建站点根目录,并添加测试主页
    image-20191029160748623
  3. 重启服务
    image-20191029161423752
  4. 测试
    image-20191029161522640
    image-20191029161552623
#/etc/httpd/conf/httpd.conf
Listen 80
Listen 8080

<VirtualHost 192.168.10.110:80>
    ServerAdmin [email protected]
    DocumentRoot /www/docs/lg80
    ServerName www.lg80.com
    ErrorLog logs/lg80-error_log
    CustomLog logs/lg80-access_log common
</VirtualHost>
<VirtualHost 192.168.10.110:8080>
    ServerAdmin [email protected]
    DocumentRoot /www/docs/lg8080
    ServerName www.lg8080.com
    ErrorLog logs/lg8080-error_log
    CustomLog logs/lg8080-access_log common
</VirtualHost>
  • 基于域名的虚拟主机
  1. 修改主配置文件

    image-20191029162748303

    image-20191029165037490

  2. 创建指定的站点目录并添加主页

    image-20191029163634403

    image-20191029163646302

  3. 重启服务

    image-20191029163745513

  4. 修改客户端C:\Windows\System32\drivers\etc\hosts文件

    image-20191029164718493

  5. 测试

    image-20191029164838344

    image-20191029165113516

##/etc/httpd/conf/httpd.conf
NameVirtualHost 192.168.10.110:80 #指定域名虚拟主机的地址及端口,若无则ServerName不生效
<VirtualHost 192.168.10.110:80>
    ServerAdmin [email protected]
    DocumentRoot /www/docs/lgweb1 #站点根目录
    ServerName web1.lg.com  #站点对应的域名
    ErrorLog logs/lgweb1-error_log
    CustomLog logs/lgweb1-access_log common
</VirtualHost>

<VirtualHost 192.168.10.110:80>
    ServerAdmin [email protected]
    DocumentRoot /www/docs/lgweb2
    ServerName web2.lg.com
    ErrorLog logs/lgweb2-error_log
    CustomLog logs/lgweb2-access_log common
</VirtualHost>

网页优化之页面压缩

  • 相关模块mod_deflate

  • 启用压缩后能够节约服务器带宽,但需要消耗额外的CPU(部分浏览器旧版本不支持)

  • 实验过程
    1. 在主配置文件中启用相关模块(httpd2.2 默认启动),并启用压缩功能
      image-20191029170352183
      image-20191029170713282
    2. 设置压缩属性(该文件需手动创建,该文件需在主配置文件中使用include指定)
      image-20191029171229793
      image-20191029170949995
      image-20191029171609221
    3. 更改网站主页内容进行测试
      image-20191029183807879
    4. 重启服务
      image-20191029171643481
    5. 测试(火狐浏览器中Ctrl+F5强制刷新,不使用浏览器缓存)
      image-20191029184103788
#/etc/httpd/conf.d/gzip.conf
<ifmodule mod_deflate.c> 
DeflateCompressionLevel 6 #压缩率, 6是建议值
AddOutputFilterByType DEFLATE text/plain  #定义压缩的资源类型
AddOutputFilterByType DEFLATE text/html 
AddOutputFilterByType DEFLATE text/php 
AddOutputFilterByType DEFLATE text/xml 
AddOutputFilterByType DEFLATE text/css 
AddOutputFilterByType DEFLATE text/javascript 
AddOutputFilterByType DEFLATE application/xhtml+xml 
AddOutputFilterByType DEFLATE application/xml 
AddOutputFilterByType DEFLATE application/rss+xml 
AddOutputFilterByType DEFLATE application/atom_xml 
AddOutputFilterByType DEFLATE application/x-javascript 
AddOutputFilterByType DEFLATE application/x-httpd-php 
AddOutputFilterByType DEFLATE image/svg+xml 
AddOutputFilterByType DEFLATE image/gif image/png image/jpe image/swf image/jpeg image/bmp 
</ifmodule> 

扩展

  • http请求方式:
    • GET:获取服务器中的某个资源
    • HEAD:只从服务器获取资源的响应首部
    • POST:向服务器发送要处理的数据(通常表单提交)
    • PUT:将请求的主体部分存储在服务器上
    • DELETE:请求删除服务器上的指定资源
    • TRACE:追踪请求到达服务器中间经过的代理服务器
    • OPTIONS:请求服务器返回对指定资源支持使用的请求方法
  • http响应状态码
    • 1XX:消息
    • 2XX:成功
    • 3XX:重定向
    • 4XX:请求错误(客户端)
    • 5XX:服务器错误

猜你喜欢

转载自www.cnblogs.com/lastyear/p/11760879.html