码迷,mamicode.com
首页 > Web开发 > 详细

httpd及https学习笔记

时间:2015-08-09 19:02:48      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:http https


一、基础概念介绍:

1、媒体类型:
html        text/html类型                           

txt           text/plain类型
jpeg        image/jpeg类型
gif           image/gif类型


2、方法:客户端希望服务器端对资源执行的动作
GET:从服务器获取一份web资源
HEAD:只从服务器获取文档的首部
POST:向服务器发送需要处理的数据(一般是表单提交)
PUT:将请求报文的主体部分存储到服务器上
DELETE:从服务器删除一份文件


3、 连接的输入/输出处理结构:
                单进程web服务器:启动一个进程接收请求,而且一次只处理一个请求;当处理结束后再接收并处理后续的请求;
                多进程web服务器:启动多个进程,每个进程处理一个请求,每来一个请求生成一个进程;预生成模型,事先生成多个空闲子进程;进程池(线程池);
                复用I/O的web服务器:一个进程响应多个请求;基于事件驱动模式实现;
                复用I/O的多线程web服务器:一个进程响应n个请求;启动m个进程;同时能处理的请求数:n*m


4、主程序:
/usr/sbin/httpd  MPM模式默认
/usr/sbin/httpd.event
/usr/sbin/httpd.worker

httpd特性之    MPM:Multipath Processing Module(多路处理模块)
                 prefork: 多进程模型,每个进程响应一个请求;稳定性好,但并发能力有限;预先生成多个空闲进程;       由于prefork使用select()系统调用,所以最大并发不能超过1024;
                 worker:多进程模型,每个进程可生成多个线程,每个线程响应一个请求;预先生成多个空闲线程;
                 event:一个进程直接响应n个请求;可同时启动多个进程;
                     httpd-2.2: 测试使用;
                     httpd-2.4: 可生产使用;

            高度模块化:core + modules,
             DSO: Dynamic Shared Object


        httpd -l: 显示编译进核心的模块
        httpd -M: 显示DSO模块

        <IfModule prefork.c>
        StartServers       8                  (启动8个空闲进程)
        MinSpareServers    5             (最少空闲进程为5)
        MaxSpareServers   20             (最大空闲进程为20)
        ServerLimit      256                 (最多客户端数)
        MaxClients       256                (最多客户端数)
        MaxRequestsPerChild  4000       (每个子进程最大处理多少个请求,就关闭)
        </IfModule>

        <IfModule worker.c>
        StartServers         4                 (启动进程数)
        MaxClients         300           
        MinSpareThreads     25
        MaxSpareThreads     75
        ThreadsPerChild     25          (每个进程最多启动多少个线程)
        MaxRequestsPerChild  0
        </IfModule>


5、日志介绍:


ErrorLog logs/error_log:定义错误日志文件路径;
        LogLevel warn

        LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

            %h    Remote host
            %l    Remote logname (from identd, if supplied)
            %u    Remote user (from auth; may be bogus if return status (%s) is 401)
            %t    Time the request was received (standard english format)
            %r    First line of request
                method  url  version
            %s    Status. For requests that got internally redirected, this is the status of the *original* request --- %>s for the last.
            %b    Size of response in bytes, excluding HTTP headers. In CLF format, i.e. a ‘-‘ rather than a 0 when no bytes are sent.
            %{Foobar}i    The contents of Foobar: header line(s) in the request sent to the server.
                %{referer}i: 跳转至当前页面之前来源的上一次所在的页面;
                %{User-Agent}i:用户代理;

            详情请参考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

        CustomLog logs/access_log  combined: 访问日志
        指令        日志文件       日志格式名称



6、curl介绍:

        curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法, FTP上传, kerberos认证,HTTP上传,代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传,,http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器,,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。

        curl的常用选项:


            -A/--user-agent <string> 设置用户代理发送给服务器
            -basic 使用HTTP基本认证
            --tcp-nodelay 使用TCP_NODELAY选项
            -e/--referer <URL> 来源网址
            --cacert <file> CA证书 (SSL)
            --compressed 要求返回是压缩的格式
            -H/--header <line>自定义头信息传递给服务器
            -I/--head 只显示响应报文首部信息
            --limit-rate <rate> 设置传输速度
            -u/--user <user[:password]>设置服务器的用户和密码
            -0/--http1.0 使用HTTP 1.0    

        用法:curl [options] [URL...]




二、https介绍及配置:

配置过程
     (a) 建立私有CA
            在CA服务器上配置
            #(umask 077; openssl genrsa -out private/cakey.pem  2048)
            #openssl req -new -x509 -key private/cakey.pem  -out cacert.pem -days 3650
            #echo 01 > serial
            #touch index.txt

     (b) 为服务器生成证书
            在httpd服务器上配置
            #mkdir certs/
            #(umask 077; openssl genrsa -out httpd.key 2048)
            #openssl  req  -new -key httpd.key  -out httpd.csr  -days 350

            在CA服务器上配置
            #openssl  ca  -in  httpd.csr  -out  httpd.crt  -days  360

      (c) 配置httpd使用数字证书

            注意:ssl会话只能基于IP创建,这意味着如果服务器仅有一个IP,那么仅为一个虚拟主机提供https服务;

                安装相应的模块程序包

                # yum install mod_ssl
                /etc/httpd/conf.d/ssl.conf
                
                /usr/lib64/httpd/modules/mod_ssl.so

                编辑/etc/httpd/conf.d/ssl.conf
                    LoadModule
                    Listen 443
                    <VirtualHost IP:PORT>
                        ServerName
                        DocumentRoot
                        SSLEngine on
                        SSLCertificateFile
                        SSLCertificateKeyFile
                    </VirtualHost>
                重启httpd服务


三、httpd2.4编译安装:

1、2.4的新特性:
        1) MPM支持运行时装载
            --enable-mpms-shared=all --with-mpm=prefork|worker|event
        2) 支持event MPM
        3) 异步读写
        4) 支持每模块及每目录分别使用不同的日志级别
        5) 增强版的表达式分析器;
        6) 支持毫秒级keepalive timeout;
        7) 基于FQDN(域名)的虚拟主机不再需要NameVirtualHost;
        8) 支持用户使用自定义变量;
        
        新增一些模块:mod_proxy_fcgi, mod_ratelimit, mod_request, mod_remoteip
        
        修改了一些配置机制:不再支持使用order, allow, deny来实现基于IP的访问控制;
 

2、安装httpd-2.4

   依賴于1.4+及以上版本的apr
        apr-1.5.0.tar.bz2
        apr-util-1.5.3.tar.bz2
        httpd-2.4.9.tar.bz2

   安装apr::

        #./configure --prefix=/usr/local/apr   (--prefix指定apr安装的目录)
        #make && make  install
   安装apr-util:
        #./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

        #make && make  install

   安装httpd:
       # ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
      # make  &&     make install     

    参数介绍:

       --sysconfdir=/etc/httpd24  指定配置文件路径
        --enable-so  启动模块动态装卸载
        --enable-ssl 编译ssl模块
        --enable-cgi 支持cgi机制(能够让静态web服务器能够解析动态请求的一个协议)
        --enable-rewrite  支持url重写
        --with-zlib  支持数据包压缩
        --with-pcre  支持正则表达式
        --with-apr=/usr/local/apr  指明依赖的apr所在目录
        --with-apr-util=/usr/local/apr-util/  指明依赖的apr-util所在的目录
        --enable-modules=most      启用的模块
        --enable-mpms-shared=all   以共享方式编译的模块
        --with-mpm=prefork         指明httpd的工作方式为prefork

        切换使用的MPM:
            LoadModule mpm_event_module modules/mod_mpm_event.so

本文出自 “秋天的童话” 博客,请务必保留此出处http://wushank.blog.51cto.com/3489095/1683081

httpd及https学习笔记

标签:http https

原文地址:http://wushank.blog.51cto.com/3489095/1683081

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!