目录
- HTTPD访问控制、虚拟主机、网页压缩优化
- HTTPD访问控制
- 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
- 基于来源地址的访问控制实现
- 禁止来自192.168.10.111的主机访问根,修改主配置文件如下
- 禁止来自10.10.86.68的主机访问sub子目录,修改配置文件如下
- 重启服务
- 由于SeverName未指定所以出现异常信息,修改ServerName属性并重启
- 192.168.101.win10客户端访问测试
- 192.168.10.111 centos6 客户机测试(为了便于观察,使用lynx工具进行测试,需要先安装该工具)
注:使用q退出
- 禁止来自192.168.10.111的主机访问根,修改主配置文件如下
#/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>
- 基于虚拟账户的访问控制实现
- 创建虚拟用户的目录,并添加测试主页
- 使用htpasswd命令添加虚拟用户,指定用户存放文件为/etc/httpd/conf.d/.htpasswd
注:-m 表示md5加密,-c自动创建账户,-s使用sha1加密,-D 删除指定账户
- 修改主配置文件如下:
- 重启服务
- win客户端访问
#/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的虚拟主机的实现
- 为虚拟服务器主机添加网卡,配置IP
- 修改主配置文件如下
- 创建指定的目录并添加主页
- 重启服务
- 测试
- 为虚拟服务器主机添加网卡,配置IP
#/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>
- 基于端口的虚拟主机
- 修改主配置文件如下(要将上一个实验配置的内容注释或删除)
- 创建站点根目录,并添加测试主页
- 重启服务
- 测试
#/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>
- 基于域名的虚拟主机
- 修改主配置文件
- 创建指定的站点目录并添加主页
- 重启服务
- 修改客户端C:\Windows\System32\drivers\etc\hosts文件
- 测试
##/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(部分浏览器旧版本不支持)
- 实验过程
- 在主配置文件中启用相关模块(httpd2.2 默认启动),并启用压缩功能
- 设置压缩属性(该文件需手动创建,该文件需在主配置文件中使用include指定)
- 更改网站主页内容进行测试
- 重启服务
- 测试(火狐浏览器中Ctrl+F5强制刷新,不使用浏览器缓存)
- 在主配置文件中启用相关模块(httpd2.2 默认启动),并启用压缩功能
#/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:服务器错误
原文地址:https://www.cnblogs.com/lastyear/p/11760879.html
时间: 2024-11-08 20:18:13