httpd-2.4安装配置

接收请求的类型:
并发访问响应模型:
单进程I/O模型:启动一个进程处理用户请求,这意味着一次只能处理一个请求,多个请求被串行响应;
多进程I/O模型:由父进程并行启动多个子进程,每个子进程响应一个请求;
复用的I/O结构:一个进程响应n个请求;
多线程模式:一个进程生成n个线程,一个线程处理一个请求;
事件驱动(event-driven):一个进程直接n个请求
复用的多进程I/O结构:启动多个进程,每个进程生成n个线程;
响应的请求数量:m*n

http的特性:
高度模块化:core+modules
DSO:dynamic shared object
MPM:Multipath processing Modules(多路处理模块)
prefork:多进程模型,每个进程响应一个请求;
一个主进程:负责生成子进程及回收子进程,负责创建套接字,负责接收请求,并将其派发给某子进程进行处理;
n个子进程:每个子进程处理一个请求;
工作模型:会预先生成几个空闲进程,随时等待用于响应用户请求,最大空闲和最小空闲;
worker:多进程多线程模型,每线程处理一个用户请求;
一个主进程:负责生成子进程,负责创建套接字,负责接收请求,并将其派发给某子进程进行处理;
多个子进程:每个子进程负责生成多个线程;
每个线程:负责响应用户请求;
并发响应数量:m*n
m:子进程数量
n:每个子进程所能创建的最大线程数量;
event:事件驱动模型,多进程模型,每个进程响应多个请求;
一个主进程:负责生成子进程,负责创建套接字,负责接收请求,并将其派发给某子进程进行处理;
子进程:基于事件驱动机制直接响应多个请求;

httpd的程序版本:
httpd 1.3:官方已停止维护
httpd 2.0:
httpd 2.2:
httpd 2.4:目前最新稳定版

httpd的功能特性:
CGI:Common Gateway Interface
虚拟主机:IP,PORT,FQDN
反射代理
负载均衡
路径别名
丰富的用户认证机制
basic
digest
支持第三方模块
...

Centos 6:httpd 2.2
程序环境:
配置文件:
/etc/ttpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
服务脚本:
/etc/rc.d/init.d/httpd
脚本配置文件:/etc/sysconfig/httpd
主程序文件:
/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
日志文件:
/var/log/httpd:
access_log:访问日志
error_log:错误日志
站点文档:
/var/www/html
模块文件路径:
/usr/lib64/httpd/modules

CentOS 7:httpd-2.4
程序环境:
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
模块相关的配置文件:/etc/httpd/conf.modules.d
主程序文件:
/usr/sbin/httpd
httpd 2.4支持MPM动态切换
日志文件:
/var/log/httpd:
access_log:访问日志
error_log:错误日志
站点文档:
/var/www/html
模块文件路径:
/usr/lib64/httpd/modules
服务控制:
systemctl enable|disable httpd.service
systemctl {start|stop|restart|status} httpd.service

MPM:prefork,worker,event
prefork:两级进程模型,父进程管理子进程,每个子进程响应一个请求;
worker:三级模型,父进程管理子进程,子进程通过线程响应用户请求,每线程处理一个用户请求;
event:两级模型,父进程管理子进程,子进程通过event-driven机制直接响应n个请求;

httpd-2.4常用配置
主配置文件:/etc/httpd/conf/httpd.conf
###Section 1:Global Environment
###Section 2:'Main' Server configuration
###Section 3:Virtual Hosts

配置格式:
    directive value
    directive:不区分字符大小写;
    value:为路径时,是否区分大小写,取决于文件系统;
常用配置:
    1.修改监听的IP和PORT
        Listen [IP:]PORT
            1.省略IP表示为0.0.0.0
            2.Listen指令可重复出现多次
                Listen 80
                Listen 8080
            3.修改监听socket,重启服务进程方可生效;
    2.持久连接
        Persistent Connection:tcp连接建立后,每个资源获取完成后不全断开连接,而是继续等待其它资源的进程;

        如何断开?
            数量限制
            时间限制
        KeepAlive On|Off
        KeepAliveTimeout 15
        MaxKeepAliveRequests 100

        测试:
        telnet WEB_SERVER_IP PORT
        GET /URL HTTP/1.1
        Host:WEB_SERVER_IP

        注意:httpd-2.4的KeepAliveTimeout可以是毫秒级
    3.MPM
        httpd-2.2不支持同时编译多个MPM模块,所以只能编译选定要使用哪个,CentOS 6的rpm包专门提供了三个应用程序文件,httpd(prefork),httpd.worker,httpd,event,分别用于实现对不同的MPM机制的支持,确认现在使用的是哪个程序文件的方法:
            ps aux | grep httpd

        默认使用的为/usr/sbin/httpd,其为prefork的mpm模块;
        查看httpd程序的模块列表;
            查看静态编译的模块: 
             #httpd -l
            查看静态编译及动态编译的模块:
             #httpd -M
        更换 使用httpd程序,以支持其它MPM机制:
            /etc/sysconfig/httpd
                HTTPD=/usr/sbin/httpd.{worker,event}
        注意:重启服务方可生效

        MPM配置:
            prefork的配置:
            <ifModule prefork.c>
            StartServers 8
            MinSpareServers 5
            MaxSpareServers 20
            ServerLimit 256
            MaxClients 256
            MaxRequestsPerChild 4000
            </ifModule>

            worker的配置:
            <ifModule worker.c>
            StartServers 4
            MaxClients 300
            MinSpareThreads 25
            MaxSpareThreads 75
            ThreadsPerChile 25
            MaxRequestsPerChild 0
            </ifModule>

PV,UV
PV:Page View
UV:User View
IP:


DSO:
    配置指定实现模块加载
    LoadModule <mod_name> <mod_path>

    模块文件路径可使用相对路径:
        相对于ServerRoot(默认/etc/httpd)

定义"Main" Server的文档页面路径
    ServerName
        ServerName [scheme://]fully-qualified-domain-name[:port]
    DocumentRoot " "
        DocumentRoot directory-path

    文档路径映射:
        DocumentRoot指向的路径为URL路径的起台位置
            其相当于站点URL的根路径;
站点访问控制常见机制
    可基于两种机制指明对哪些资源进行何种访问控制

    文件系统路径:
        <Directory "">
        ...
        </Directory>

        <File "">
        ...
        </File>

        <FileMatch "PATTERN">
        ...
        </FileMatch>

    URL路径:
        <Location "">
        ...
        </Location>

        <LocationMatch "PATTERN">
        ...
        </LocationMatch>


    <Directory>中基于源地址实现访问控制
        1.Options
            后跟1个或多个以空白字符分割的“选项列表”;
                Index:指明URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户;
                FollowSymLinks:允许跟踪符号链接文件所指向的源文件;
                None:
                All:
        httpd-2.2
            1.AllowOverride
                与访问控制相关的哪些指令可以放在.htaccess文件(每个目录下都可以有一个)中;
                All:
                None
            2.order和allow、deny
                order:定义生效次序,写在后面的表示默认法则;
                Alow from,Deny from
                来源地址:
                    IP
                    NetAddr:
                        172.16
                        172.16.0.0
                        172.16.0.0/16
                        172.16.0.0/255.255.0.0
        httpd-2.4
            Requires


日志设定:
    日志类型,访问日志,错误日志

    错误日志:
        Error logs/error_log
        LogLevel warn
            Possible values include:debug,info,notice,warn,error,crit,alert,emert

    访问日志:
        LogFormat ""%h%l%u%t\"%r\"%r\"%>s%b\"%{Referer}i\"\"%{User-Agent}|\""combined
        CustomLog logs/access_log combined

        LogFormat format strings:
            http://httpd.apache.org/docs2.2/mod/mod_log_config.html#formats

            %h:客户端IP地址
            %l:Remote User,通常为一个减号("-")
            %u:Remote user(from auth;may be bogus if return status(%s)ls 501);非为登录访问时,其为一个减号;
            %t:服务器收到请求的时间;
            %r:First line of request,请求报文的首行,记录了此次请求的"方法","URL"以及协议版本
            %>s:响应状态码;
            %b:响应报文的大小,单位是字节,不包括响应的文的http首部;
            %{Referer}i:请求报文中首部"referer"的值,即是从哪个页面中的超链接跳转至当前页面的;
            %{User-Agent}:请求报文中首部"User-Agent"的值,即发出请求的应用程序;

基于用户的访问控制
认证质询:
    WWW-Authenticate:响应码为401,拒绝客户请求,并说明要求客户端提供账号和密码;
认证:
    Authenticate:客户端用户填入账号和密码后再次发送请求报文,认证通过时,则服务器发送响应的资源;
    认证方式有两种:
        basic:明文
        digest:消息摘要认证

安全域:需要用户认证后方能访问的路径,应该通过名称对其进行标识,以便于告知用户认证的原因;

账号存储位置:
    文本文件
    SQL数据库
    ldap目录存储

basic认证配置示例:
    1.定义安全域
        <Directory "/var/www/html/admin">
            Options None
            AllowOverride None
            AuthType Basic
            AuthName "String"
            AuthUserFile "/etc/httpd/conf.d/.passwd"
            Require user username1 username2 ...
        </Directory>

        允许账号中的所有用户登录访问:
            Require valid-user

    2.提供账号和密码存储(文本文件)
        使用专用命令完成此类文件的创建及用户管理
            htpasswd [options] /etc/httpd/conf.d/.passwd
                -c:自动创建指定文件,仅在首次创建使用
                -m:md5格式加密
                -s:sha格式加密
                -b:命令行中直接输入密码



虚拟主机:
    基于IP的虚拟主机
    <VirtualHost 192.168.2.104:80>
        ServerName www.ilinux.com
        DocumentRoot "/data/web/ilinux"
        <Directory "/data/web/ilinux">
            Options None
            AllowOverride None
            Require all granted
        </Directory>
    CustomLog "logs/ilinux_access_log" combined
    </VirtualHost>

    <VirtualHost 192.168.2.105:80>
        ServerName www.iunix.com
        DocumentRoot "/data/web/iunix"
        <Directory "/data/web/iunix">
            Options None
            AllowOverride None
            Require all granted
        </Directory>
    CustomLog "logs/iunix_access_log" combined
    </VirtualHost>

    基于端口的虚拟主机
    <VirtualHost>
    ServerName www.ilinux.com
        DocumentRoot "/data/web/ilinux"
        <Directory "/data/web/ilinux">
            Options None
            AllowOverride None
            Require all granted
        </Directory>
        CustomLog "logs/ilinux_access_log" combined
    </VirtualHost>
    
    Listen 10080
    <VirtualHost 192.168.2.104:10080>
        ServerName www.iunix.com
        DocumentRoot "/data/web/iunix"
        <Directory "/data/web/iunix">
            Options None
            AllowOverride None
            Require all granted
        </Directory>
    CustomLog "logs/iunix_access_log" combined
    </VirtualHost>

    基于域名的虚拟主机
    <VirtualHost 192.168.2.104:80>
        ServerName www.ilinux.com
        DocumentRoot "/data/web/ilinux"
        <Directory "/data/web/ilinux">
            Options None
            AllowOverride None
            Require all granted
        </Directory>
        CustomLog "logs/ilinux_access_log" combined
    </VirtualHost>


<VirtualHost 192.168.2.104:80>
    ServerName www.iunix.com
    DocumentRoot "/data/web/iunix"
    <Directory "/data/web/iunix">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
    CustomLog "logs/iunix_access_log" combined
</VirtualHost>

注意:如果是httpd-2.2,则使用FQDN的虚拟主机时,需要事先使用如下指令:
    NameVirtualHost IP:PORT

status页面
LoadModule staus_module modules/mod_status.so

httpd-2.2
<Location /server-status>
    SetHandler server-status
    Order allow,deny
    Allow from 192.168
</Location>

httpd-2.4
<Location /server-status>
    SetHandler server-status
    Require ip 192.168
</Location>

http://www.ilinux.com/server-status

root@node2:~/e/net34#

转载于:https://www.cnblogs.com/feng-land/p/10023284.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值