linux之httpd站点访问控制 主机端口域名的虚拟主机 网页优化压缩 网页状态码
httpd站点访问控制 主机端口域名的虚拟主机 网页优化压缩 网页状态码
6Centos 配置第二块网卡
先在虚拟机设置中增加一个网络适配器
然后去配置网卡
复制为第二块网卡
去修改配置第一个网卡
NM_CONTROLLED=no (关闭,使用自己手写的IP地址)
BOOTPROTO=none (关闭自动获取)
IPADDR=192.168.10.20 (ip)
NETMASK=255.255.255.0 (掩码)
第二个网卡为 同上修改 在把uuid和HWADDR 这个两个注释
1.)httpd站点访问控制
访问控制:什么样的客户端可以访问指定的网页资源,或者什么样的客户端不能访问指定的网页资源
vim /etc/httpd/conf/httpd.conf配置文件位置
<Directory “要控制目录的绝对路径”> </Direcotry> --标签对成对出现
内部指令只对Directory容器生效,完成控制(实现对目录的访问控制)
<Files “文件的名字”> 文件的控制属性,或访问控制 </Files>
针对某个文件进行控制,而非路径名称,必须只写文件名称。
<FilesMatch “文件名字”> </FilesMatch>
基于正则表达式模式进行控制(调用正则表达式引擎模块,效率低)
例如:<FilesMatch "\.(gif|jp?g|png)$">
\ 转移字符 . 有一个字符 ( ) 子正则表达式
gif | 或 jp?G 0或者一个 png $ 表示结尾
URL路径进行控制(网址)
<Location “”> </Location>此容器需单独定义,不要定义在Directory之中。
2.)访问控制的机制: 通过请求 来源地址和账号
vim /etc/httpd/conf/httpd.conf
基于来源地址”的访问控制是在<Directory></Directory>标签对中实现的
Options选项(常用子选项Indexes、FollowSymLinks)
Indexes代表索引页面,在找不到要指定的页面时(首页)把目录的内容以列表的形式显示出来(可以移除index.html/welcome.conf完成测试);
FollowSymLinks:网页路径下启用符号链接文件(谨慎使用)。
1.注释apache原来网页路径目录的网页 显示目录实验:
cd /etc/httpd/conf
vim /etc/httpd/conf/httpd.conf去改主配置文件
去修改设定的索引页,即测试网页位置
Listen 80 ---监听的端口
User apache
Group apache ---工作组和用户,即父进程用户是root,子用户是apache
ServerName www.ujiuye.com:80 ---网址服务的名称
DocumentRoot "/var/www/html" --即测试网页位置
再去设置测试网页 cd /var/www/html/ vim index.html
在这里面输入的内容 会在真机中查看到
Indexes代表索引页面,测试找不到,显示目录的列表实验
把index.html名字修改一下 就会显示出阿帕奇那个自己设定的默认网页
/etc/httpd/conf.d/welcome.conf 路径
把其中内容注释即可显示目录
重启服务
/etc/init.d/httpd restart
真机查看 目录
2.软连接(网页中查看软连接 前提是网站没有首页)
FollowSymLinks:网页路径下启用符号链接文件(谨慎使用)。
ln -s kkk1 aaa
链接的文件 要到的位置
注意 :在vim /etc/httpd/conf/httpd.conf 配置文件中可以删除
Options Indexes 改成这样即可
3.基于来源ip地址访问控制实现方式:
vim /etc/httpd/conf/httpd.conf --主配置文件
在<Directory></Directory>标签对中加入:
不允许某一个
Order Allow,Deny
Allow from all ---允许所有客户端访问网页指定的内容
Deny from ip1 ip2 --[指定ip地址,或完全域名 域名 ip地址段 不可访问]
Ip1 ip2 不可访问 空格分隔 没有逗号 192.168.10.0/24
注意:按照order指定的顺序检查权限,
规则是从上往下读取生效,后面的规则会覆盖前面规则
如:允许某一个机器访问
Order deny,allow
deny from all ---都不允许访问
allow from 219.204.253.8 ---只允许219.204.253.8访问
实验需求:(1)对你的网站根目录进行访问控制,使得任何人都可以访问;
在网站根目录下新建一个目录public,进行访问控制,使得本机不能访问,其他人可以访问。
vim /etc/httpd/conf/httpd.conf
(1)允许所有人访问
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
(2)不允许本机
<Directory "/var/www/html/public">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Deny from 127.0.0.1 192.168.10.20
</Directory>
cd /var/www/html/ vim index.html 再去设置测试网页
真机测试
http;//192.168.10.20 ---这是主的配置里面
http://192.168.10.20/public/ 会显示这个目录下的网页
但是本机不能访问
curl 192.168.10.20/public
4.基于账号密码来进行访问控制 htpasswd命令进行创建用户
原理:客户端进行请求服务端web资源,要求用户提供账号和密码
basic认证:以明文的方式认证
digest: 消息摘要认证
basic认证定义和流程:
①使用虚拟账号(非操作系统账号)来进行认证 建立账号 虚拟存在
②提供账号和密码存储文本文件 建立账号密码存放文件
htpasswd命令进行创建用户
命令格式:htpasswd [option] passwordfile UserName
选项:
-c 自动创建账号密码文件,添加第一个用户使用 (第二个不用-C)
-m 使用md5加密算法加密密码
-s 使用sha1加密算法加密密码
-D 删除指定用户账号
#创建用户文件解读
(1)创建账号第一个: htpasswd -c -m /etc/httpd/conf.d/.htpasswd offcn1
-c 创建保留账号密码的文件(第一个账号需要,第二个不需要) -m加密算法
现在为http 建立一个用户 名字叫做offcn1
账号密码文件是 /etc/httpd/conf.d/.htpasswd
第二个用户 htpasswd -m /etc/httpd/conf.d/.htpasswd ujiuye
(2)定义安全域,在主配置文件中的Directory容器中定义
vim /etc/httpd/conf/httpd.conf 主配置文件
<Directory "/var/www/html/private"> --要控管的目录
Options Indexes FollowSymLinks
AllowOverride None
AuthType Basic --认证的方式(两种)
AuthName "Welcome" --认证的标题 显示在对话框上面
AuthUserFile "/etc/httpd/conf.d/.htpasswd" -指定用户密码文件
Require valid-user valid-user-有效用户 可以指定用户ujiuye
</Directory>
---可以指定某一个或某几个用户,例如user1 user2
账号密码访问 控制实验
要求1: 在网站根目录中定义一个目录private,
要求2,只有用户offcn123、密码123456才能访问,其他人不能访问
mkdir /var/www/html/private
htpasswd -c /etc/httpd/conf.d/.htpasswd offcn123
创建用户offcn123 第二个不需要-c
vim /etc/httpd/conf/httpd.conf 更改主配置文件
<Directory "/var/www/html/private">
Options Indexes
AllowOverride None
AuthType Basic
AuthName "Welcome"
AuthUserFile "/etc/httpd/conf.d/.htpasswd"
Require valid-user
</Directory>
/etc/init.d/httpd restart 重启服务
2.创建目录和用户 写测试网页
创建第一个用户 htpasswd -c -m /etc/httpd/conf.d/.htpasswd offcn123
设置密码
3.windows服务端测试 http://192.168.10.20/private/
Linux服务端测试 http://192.168.10.20/private/
3.Linux虚拟主机配置 基于主机 基于端口 基于域名
查看本机是否有两个网卡
三种实现方案:
1.基于IP的虚拟主机 (有多少站点就有多少ip网卡)
2.基于port(端口)的虚拟主机
3.基于域名的虚拟主机(主机名)(通过网站名称来区分访问哪个站点)
注意:三种方案可以进行混合使用,但是不可和中心主机进行混用,于是需要禁用中心主机。
1. )基于ip的虚拟主机
1.配置内容解读 vim /etc/httpd/conf/httpd.conf
配置模板
<VirtualHost 192.168.10.20:80>
ServerAdmin root@www.offcn.com --网站管理员root+邮箱
DocumentRoot /var/www/www.offcn.com --指定网站网页的根路径
ServerName www.offcn.com --网站名称
ErrorLog logs/www.offcn.com-error_log --错误的日志文件位置
CustomLog logs/www.offcn.com-access_log common --访问日志文件
</VirtualHost>
Log 是软连接 真实路径是var/log/httpd
2.去改主配置文件
cd /etc/httpd/conf
vim /etc/httpd/conf/httpd.conf -下面有配置模板
<VirtualHost 192.168.10.20:80>
ServerAdmin root@www.ujiuye.com
DocumentRoot /www/doc/www
ServerName www.ujiuye.com
ErrorLog logs/www-error_log
CustomLog logs/www-access_log common
</VirtualHost>
<VirtualHost 192.168.10.21:80>
ServerAdmin root@bbs.ujiuye.com
DocumentRoot /www/doc/bbs
ServerName bbs.ujiuye.com
ErrorLog logs/bbs-error_log
CustomLog logs/bbs-access_log common
</VirtualHost>
3.重启 创建目录 在目录下创建测试网页 index.html
/etc/init.d/httpd restart
mkdir /www/doc/www -p --创建目录
mkdir /www/doc/bbs -p
cd /www/doc/
cd www/
vim index.html --创建测试网页
Cd ..
cd bbs/
vim index.html
/etc/init.d/httpd restart ---重启服务
4.测试
通过ip地址
5.通过解析DNS来访问测试 或者在 vim /etc/hosts 来指定
在Linux端服务器实验
vim /etc/hosts
2.)基于端口的虚拟主机
1.主配置文件 vim /etc/httpd/conf/httpd.conf
<VirtualHost 192.168.10.20:80>
ServerAdmin root@web.ujiuye.com
DocumentRoot /www/doc/web
ServerName web.ujiuye.com
ErrorLog logs/web-error_log
CustomLog logs/web-access_log common
</VirtualHost>
<VirtualHost 192.168.10.20:8080>
ServerAdmin root@movie.ujiuye.com
DocumentRoot /www/doc/movie
ServerName movie.ujiuye.com
ErrorLog logs/movie-error_log
CustomLog logs/movie-access_log common
</VirtualHost>
Listen 80
Listen 8080
注意:添加Listen 8080
2.创建目录 在目录下创建测试网页 index.html 然后重启服务
/etc/init.d/httpd restart
3.测试
客户机windows
http://192.168.10.20:80
http://192.168.10.20:8080
Linux端服务器
http://192.168.10.20:80
http://192.168.10.20:8080
4.通过解析DNS来访问测试 或者在 vim /etc/hosts 来指定
Linux端服务器
vim /etc/hosts --添加映射
测试: linux端
3.)基于域名的虚拟主机
#开启NameVirtualHost(Http-2.4版本可以不用)
监听端口和虚拟主机内部设置保持一致。
1.主配置文件 vim /etc/httpd/conf/httpd.conf
在虚拟主机配置容器进行相关配置即可
打开NameVirtualHost
NameVirtualHost *:80 *代表所有ip 都是监听80端口,也可写ip
<VirtualHost 192.168.10.20:80>
ServerAdmin root@www1.ujiuye.com
DocumentRoot /www/doc/www1
ServerName www1.ujiuye.com
ErrorLog logs/www1-error_log
CustomLog logs/www1-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin root@www2.ujiuye.com
DocumentRoot /www/doc/www2
ServerName www2.ujiuye.com
ErrorLog logs/www2-error_log
CustomLog logs/www2-access_log common
</VirtualHost>
2.创建目录 和测试网页 重启服务
/etc/init.d/httpd restart 重启服务
3.linux端测试 先做DNS 或者本机作指定vim /etc/hosts
vim /etc/hosts
www1.ujiuye.com
www2.ujiuye.com
4.httpd网站页面优化
mod_deflate模块压缩页面(实现优化传输速度)
使用此模块进行压缩web页面,适用于节约带宽的服务器场景,但会额外多消耗CPU,同时某些老式浏览器不支持 适用于压缩的资源,比如文本文件。
1.配置: 需要在httpd主配置文件确定mod_deflate模块处于开启状态。
vim /etc/httpd/conf/httpd.conf 主配文件中查看
或httpd -M | grep deflate
2.在httpd的主配置文件中启用gzip压缩网页功能
vim /etc/httpd/conf/httpd.conf 主配文件中 写入下面这句, 表示启用压缩
SetOutputFilter DEFLATE -----开启压缩
压缩目录可以在主配文件中写 也可新建 为辅助配置
vim /etc/httpd/conf.d/gzip.conf 以 .conf 结尾,开机会自启
在httpd的辅助配置文件目录中,编写页面压缩相关的配置文件,
例:(如果需要在conf.d目录下写入辅助配置文件,可以不加入include选项)
vim /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>
开发者 网络 F12 可查看压缩
或者复制 一个大一点的 文件
查看 http://192.168.10.20/gzip.conf
注意:在测试时,要注意清除注意器缓存
5..扩展内容httpd 返回状态码 常见请求方法(method)详解
GET:获取服务器中的某个资源
HEAD:只从服务器获取资源的响应首部
POST:向服务器发送要处理的数据(通常表单提交)
PUT:将请求的主体部分存储在服务器上
DELETE:请求删除服务器上的指定资源
TRACE:追踪请求到达服务器中间经过的代理服务器
OPTIONS:请求服务器返回对指定资源支持使用的请求方法(取得资源的方法)
http响应状态码: 1xx 信息类
2xx ok
3xx 重定向 跳转
4xx 客户端错误
5xx 服务端错误
Httpd常用状态码:
200 成功,请求所有数据通过body部分发送 原因短语:ok
301 请求的URL指向的资源已被删除,但在响应报文中指明了新位置,并永久重定向到新位置 原因短语:Moved Permanently
302 与301相似,区别在于临时重定向。 原因短语:Found
304 客户端发出条件式请求,触发缓存资源(资源未曾发生改变)。 原因短语:Not Modified
401 需要账号密码认证 原因短语:Unauthorized
403 请求被禁止 原因短语:Forbidden
404 服务器资源无法找到客户端请求的资源 原因短语:Not Found
500 服务器内部错误 原因短语:Internal Server Error
502 代理服务器从后端服务器收到了一条伪响应 原因短语:Bad Gateway