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选项(常用子选项IndexesFollowSymLinks

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

 

posted @ 2020-08-01 11:21  浅唱I  阅读(803)  评论(0编辑  收藏  举报