HTTP协议及Apache配置解析

一、http协议简介

1.httpHyperText Transfer Protocal 超文本传输协议(应用层协议)是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。目前普遍使用的HTTP协议的版本是HTTP/1.1

2.HTTP/1.1协议中共定义了八种方法(动作)来以不同方式操作指定的源:

    <1 >OPTIONS:这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。

     <2> HEAD:GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部份。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)

<3>GET:向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。参见安全方法

<4>POST:向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。

<5>PUT:向指定资源位置上传其最新内容。

<6> DELETE:请求服务器删除Request-URI所标识的资源。

<7>TRACE:回显服务器收到的请求,主要用于测试或诊断。跟踪一次请求中间所经过的代理服务器。

<8>CONNECT: HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)

3.HTTP/1.1特点

 持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。HTTP/1.1相较于HTTP/1.0协议的区别主要体现在:

<1>缓存处理

<2>带宽优化及网络连接的使用

<3>错误通知的管理

<4>消息在网络中的发送

<5>互联网地址的维护

<6>安全性及完整性

 4.HTTP响应码

 <1>1xx消息――请求已被服务器接收,继续处理

 <2>2xx成功――请求已成功被服务器接收、理解、并接受

     <3>3xx重定向――需要后续操作才能完成这一请求

301:永久重定向;302:临时重定向;304:Not Modified

     <4>4xx请求错误――请求含有词法错误或者无法被执行

404:Not Found

     <5>5xx服务器错误――服务器在处理某个正确请求时发生错误

502:网关错误;503:服务不可用;504:网关超时

二、httpd安装与工作属性配置

1.Linux下常用的WEB服务器软件有:ApacheNginxTomcatLighttpd Apache服务器其靠运行和处理方面的稳定性,可靠而优越的性能,成为WEB服务器领域中佼佼者。

2.工作属性配置细节

Apache配置中的指令不区分字符大小写,但一般习惯单词的首字母大写;指令的值区分大小写;指令和值之间用空格隔开;有些指令可以重复使用多次。

配置文件有三部分组成:

<1>全局配置:对主服务器和虚拟主机都有效,且有些功能是服务器自身工作属性。

<2>主服务器:主站属性

<3>虚拟主机:虚拟主机及属性定义。

注:第二段和第三段不能同时使用。

配置文件语法测试:

<1>service httpd configtest

<2>httpd �Ct 

注:大多数配置修改后,使用service httpd reload 即可生效,但端口及地址修改后需要重启服务。

 3.Apache工作属性配置

     <1>配置监听的地址和端口

  修改主配置文件/etc/httpd/conf/httpd.conf

Listen [IP: ] PORT IP省略表示监控当前主机上的所有IP

     <2>配置所选用的MPM属性

             MPM:多道处理模块。

            http �Cl 查看直接编译进MPM的模块

             Prefork:一个进程响应一个请求。

主进程功能

<1>绑定特权端口

<2>派发或回收子进程

<3>读取分析配置文件

<4>监听每个各户请求,并为每个客户派发子进程。

<IfModule prefork.c>//如果模块存在则执行

StartServers 8 //开启时生成的进程

MinSpareServers5 //最少空闲进程

MaxSpareServers20 //最多空闲进程

ServerLimit 256 //

MaxClients 256 //允许客户端连接的最大值

MaxRequestsPerChild4000 //服务器端的一个进程处理的最多请求

</IfModule>

          Worker:一个进程生成多个线程,一个线程响应一个请求。

    如果想要启用此模块需要修改配置文件/etc/sysconfig/httpd

 <3>.配置服务器支持Keep-Alive (持久连接)

        KeepAlive{On|Off}

        KeepAliveTimeout 15:连接超时时间(默认15秒);Apache2.4可以精确到毫秒。

         MaxkeepAliveRequests 100:一次连接之内最多请求的资源

<4>配置加载的模块

       LoadModule foo_module modules/mod_foo.so

<5>配置页面文件访问属性

       <Directory “FS_PATH”>//htaccess:分布式配置,此处理解为容器

             Options

             Indexes:是否允许索引页面文件,强烈建议关闭(除非提供的是一个下载站点)

             Followsynlinks:是否跟随软连接文件

             ExecCGI:是否允许执行CGI脚本,不建议开启

        </Directory>

 <6>基于客户端的访问控制

  <7>路径别名;脚本路径别名

   装载CGI模块

          CGI:协议

   在Options 后加上ExecCGI

        ScriptAlias /PATH/TO/SOMEDIR

        cat << EOF

       Content-Type: text/html

        <pre>

        </pre>

         EOF

<8>基于用户的访问控制

        DocumentRoot “”

     <Directory “PATH/TO/DocumentRoot_SUBDIR”>

               Options None

             AllowOverrideAuthConfig//是否允许覆盖

             AuthName ”Realm”//认证名称,任意字符串(主要为解释)

             AuthType Basic //认证类型,一般选用Basic

             AuthUserFile /path/to/passwords //用户密码文件

              Require USER//指定可登录用户 valid-user:所有用户

     </Directory>

 密码文件的创建:

       Htpasswd �Cc(创建一个新文件,首次创建时使用) �Cm(MD5加密)|-s(RSA加密) FLIE(文件保存位置) USERNAME 

 <9>虚拟主机(使用虚拟主机需要关闭主服务器)

              <VirtualHost IP:PORT>

                  ServerName “”

                  DocumentRoot “”

              </VirtualHost>

(1)基于端口的虚拟主机(不常用,一般用于内部:注释掉主服务器DocumentRoot)

   (2)基于IP的虚拟主机(不常用)

   (3)基于主机名的虚拟主机

<10>.httpd status(状态信息输出接口)

        LoadModule status_modules modules/mod_status.so //确保此模块装载

            <Location/status>//必要时开启,默认关闭,开启此模块会影响服务器性能

                        SetHandler server-status//启用一个处理器

                                   //

                                          …

                    控制访问法则

                                           …

                                  //

             </Location>

          ExtendedSatus {On|Off}//是否为status开启更多信息(不建议开启)

三、HTTPS配置完全解析

           https(http+SSL)(http+TLS)

           SSL/TLS 会话的建立仅能基于IP地址进行

       监听端口:443/TCP

     要实现https协议必须安装mod_ssl模块

            yum install mod_ssl(装载模块不做演示)

      实现https前提:给http服务提供私钥文件和证书文件

生成私钥 ;证书申请 ;自建CA

编辑配置文件vim /etc/httpd/conf.d/ssl.conf

  1.自建CA

    <1>生成私钥 cd /etc/pki/CA

 <2>自签证书

 <3>搭建ftp服务器将证书以.crt为后缀的文件挂至ftp的pub目录下,供客户端下载。

 2.申请证书

  <1>切换至 cd /etc/httpd/conf/  生成一个私钥

  <2>发出一个证书请求(注意信息一致)

 3.生成一个证书,查看证书信息。

 4.修改配置文件 vim /etc/httd/conf.d/ssl.conf 打开配置文件,修改以下数据

   监听端口修改为443

  添加虚拟主机

 指定DocumentRoot 和ServerName

开启ssl功能

指定证书文件位置

指定私钥文件位置

从ftp服务器上下载证书,安装证书

证书导入

测试访问站点

添加安全例外

访问成功

 

 

你可能感兴趣的:(apache)