第十周作业

Httpd

httpd是Apache 超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。

程序环境配置文件:
  1. /etc/httpd/conf/httpd.conf  httpd 主配置文件
  2. /etc/httpd/conf.d/*.conf    httpd自建配置文件(此为httpd默认目录可以以读取所有.conf结尾的配置文件)
  3. /usr/sbin/httpd httpd-2.4 支持(Multi-Processing Module,多进程处理模块)的动态切换。
  4. /var/log/httpd/{access_log(访问日志),error_log(错误日志)}
  5. /var/www/html/;  站点文档(web页面)
  6. /usr/lib64/httpd/modules ; 模块文件路径

服务启动方法:

 多进程处理模块:

  1. prefork:多进程模型,一个集成响应一个请求。
  2. worker:多进程多线程模型,一个线程响应一个请求。
  3. event:时间驱动模型,一个进程响应n个请求。
 切换MPM的工作模式只需编辑/etc/sysconfig/httpd/conf.modules.d/00-mpm.conf 里边将三种工作模式前面的# 号去掉即可(不可同时启用)
重启服务并检查语法错误

使用命令查看效果  httpd -M 

语法错误检查AH00558 修复办法

简述 request

request 对象是http事物中客户端带有客户信息并发出数据请求,然后在获取数据后返回至客户端。request主要用来处理客户浏览器提交请求的各项参数和选项。

报文语法格式:

request 请求报文

<method> <request-URL> <version>

<HEADERS>

<entity-bobu>

response 响应报文

<version> <status> <reason-phrase>

<HEADERS>

<entity-boby>

method 方法:
  1. GET:从服务器获取一个资源;
  2. HEAD:只从服务器获取文档的响应首部;
  3. POST:向服务器发送要处理的数据;
  4. PUT:将请求的主题部分存储在服务器上;
  5. DELETE:请求上述服务器上的指定文档;
  6. TRACE:追踪请求到达服务器中间经过的代理服务器;
  7. OPTIONS:请求服务器返回对指定资源的支持使用的请求方法;
status 状态吗:
  1. 1xx:100-101;信息提示;
  2. 2xx:200-206;成功;
  3. 3xx:300-305;重定向;
  4. 4xx:400-415;客户端错误信息;
  5. 5xx:500-505;服务器错误信息;
常用状态码:
  1. 200:成功,请求的所有数据通过响应报文的entity-boby部分发送ok;
  2. 301:请求去的URL指向的资源已经被删除,但在响应的报文中通过首部Location指明了资源现在所处的新位置,Moved premanently。
  3. 302:与301相似,但在响应报文中Location指明资源所处临时新位置,Found。
  4. 401:需要输入账号和密码认证方法访问资源;Unauthorized
  5. 403:请求被禁止;Forbidden
  6. 404:服务器无法找到客户端请求的资源;Not Found
  7. 500:服务器内部错误,Internal Server Error
  8. 505:代理服务器从后端服务器收到一条伪响应;Bad Gateway
协议查看分析工具
  • tcpdump
  • tshark
  • wireshark

 

Httpd 虚拟机

在一台物理主机上使用根据httpd配置模拟出多个不同的网站。

事项的三种方案:
  1. 基于IP:虚拟主机至少拥有一个独立的IP地址;ip相同;但端口不同;
  2. 基于Port:虚拟主机至少拥有一个独立的port;ip不同,但端口均为默认端口。
  3. 基于FQDN:虚拟主机至少拥有一个FQDN;请求报文首部不同
注意:
  • httpd-2.2 虚拟知己不可与中心主机混用,使用前要先禁用“main”主机;注释掉中心主机的DocumenRoot指令即可;
  • httpd-2.4 配置即可使用。
配置一台虚拟主机:
主机拥有两个块网卡:
  1. 192.168.199.175 ; 为虚拟主机 A 域名www.acb.io 资源目录为/data/web/abc
  2. 192.168.199.185;为虚拟主机 B 域名www.xyz.io 资源目录为/data/web/xyz
~]# mkdir -pv /data/web/{abc,xyz}
~]# vim /data/web/abc/index.html
    <h1> www.abc.io </1h>
~]# vim /data/web/xyz/index.html
   <h1>www.xyz.io </h1>

关闭防火墙和selinux
修改httpd的默认环境配置
~]# yum -y insatll httpd
~]# vim /etc/httpd/conf/httpd.conf
ServerName www.example.com:80   第95行 启用本行.

赋权给目录访问权限
DocumentRoot "/data/web/www"   第120行;修改目录.
<Directory "/data/web/www">   第133行;授权目录权限.

创建虚拟机--IP不同
1、创建A、B虚拟主机的配置文件
虚拟主机A
[root@localhost conf.d]# vim abc.conf
<VirtualHost 192.168.199.175:80>
    ServerName www.abc.io
    DocumentRoot "/data/web/abc"
    <Directory "/data/web/abc">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
    CustomLog "logs/abc_access_log" combined
</VirtualHost>

 
虚拟主机B
[root@localhost conf.d]# vim xyz.conf
<VirtualHost 192.168.199.185:80>
    ServerName www.xyz.io
    DocumentRoot "/data/web/xyz"
    <Directory "/data/web/xyz">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
    CustomLog "logs/xyz_access_log" combined
</VirtualHost>

 
2、验证语法错并重载配置文件

3、浏览器通过iP访问

192.168.199.175

192.168.199.185

创建虚拟机–端口不同
1、修改的ip和端口
[root@localhost conf.d]# cat /etc/httpd/conf.d/xyz.conf 
listen 8090      添加监听端口
<VirtualHost 192.168.199.175:8090>  修改ip地址(A配置地址)及端口
    ServerName www.xyz.io
    DocumentRoot "/data/web/xyz"
    <Directory "/data/web/xyz">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
    CustomLog "logs/xyz_access_log" combined
</VirtualHost>

 
2、浏览器通过iP访问

192.168.199.175:80

192.168.199.185:8090

创建虚拟机–主机名不同
1、修改A 的配置文件
<VirtualHost 192.168.199.175:80>  
    ServerName www.abc.io
    DocumentRoot "/data/web/abc"
    <Directory "/data/web/abc">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
    CustomLog "logs/abc_access_log" combined
</VirtualHost>

2、修改B 的配置文件
<VirtualHost 192.168.199.175:80>  
        ServerName www.xyz.io
        DocumentRoot "/data/web/xyz"
        <Directory "/data/web/xyz">
                Options None
                AllowOverride None
                Require all granted
        </Directory>
        CustomLog "logs/xyz_access_log" combined
</VirtualHost>

3、测试需要确认hosts 能够做地址解析
~]# vim /etc/hosts

4、浏览器输入域名测试
www.abc.io
www.xyz.io

站点访问控制

授权访问分为白名单(仅允许访问,黑名单禁止访问两种)

全局连接授权管理,编辑配置问价*.conf 定义在 RequireAll 下
  • 黑名单:
  1. Requireall denied 全部禁止

单IP禁止访问

  1. Requireall granted 需要开启全部允许
  2. Require not ip 192.168.199.10

IP段禁止访问

  1. Require all granted 需要开启全部允许
  2. Require not ip 192.168.199.1 192.168.1.200
  • 白名单:
  1. Require all granted 全部允许

           指定IP地址允许访问

  1. Require  ip 192.168.2.1   
  2. Require all denied 全部禁止       
           IP段允许访问
  1. Require all denied
  2. Require  ip 1921.68.2.1 192.168.2.200
基于主机名禁止和允许:

允许用户访问

  1. Require host DESKTOP-811RO48   允许访问
  2. Require all denied   全部禁止

禁止用户访问

  1. Require not host DESKTOP-811RO48
  2. Require all granted  全部允许

基于用户的访问控制:

1、生成账号密码文件:

2、创建tom、jerry的授权用户管理

[root@VM_35_189_centos conf.d]# vim /etc/httpd/cond.d/admin.conf 
<Directory "/data/web/www/admin">
        Options None
        AllowOverride None
        AuthType basic
        AuthName "Admin Area,plz enter username and password."
        AuthUserFile "/etc/httpd/conf.d/.htpasswd"  指定授权用户文件
        Require user jerry obama    添加授权用户访问
</Directory> 

浏览器打开测试:192.168.199.1/admin
分别使用用户 jerry、tom、obama登录查看效果
3、用户组访问控制:
1、添加用户组授权文件:

2、修改配置文件添加授权组配置段
<Directory "/data/web/www/admin">
        Options None
        AllowOverride None
        AuthType basic
        AuthName "Admin Area,plz enter username and password."
        AuthUserFile "/etc/httpd/conf.d/.htpasswd"
        AuthGroupFile "/etc/httpd/conf.d/.htgroup"    添加授权组
        Require group adminals    标明授权组名
</Directory> 

3、打开浏览器输入主机地址测试访问;

持久连接配置

1、修改配置文件添加配置信息;

使用命令测试  httpd -t 

2、使用telnet 测试

 

原创文章,作者:N28_刚好遇到小熊猫,如若转载,请注明出处:http://www.178linux.com/124647

发表评论

登录后才能评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code