Wed Server之httpd基础(1)

Web Service


套接字:

    unix sock:基于文件系统,再同一台主机上,客户端通过写入访文件,服务端读入数据。

    socket:ip:port或ip.port;不在同一主机上,通过ip封装连接,完成通信。


传输层协议:

    面向连接:tcp

        虚连接:三次握手

    无连接:udp


套接字的类型

    TCP套接字

    UDP套接字

    RAW套接字:裸连接   

注意:一般数据无法绕过网际协议;ipv4;ipv6;数据链路层相当于设备驱动;物理层相当于硬件


c/s

通信子网:传输

应用层协议:应用

    http https smtp imap pop ldap



http: hyper text transfer protocol, 80/tcp


html: 编程语言,超文本标记语言;

    Client:Browse

        URI子集:URL

    Server :http Serve

    例如:

        <html>

        <head>

        <title>TITLE</title>

        </head>

        <body>

        <h1></h1>

        <p> blabla... <a href="http://www.magedu.com/logo.jpg"> blabla </a> </p> 

        <h2></h2>

        </body>

        </html>

    

    CSS: Cascading Style Sheet

    

动态页面:

    程序脚本    

        客户端

        服务端:CGI接口(服务端运行之后发送至客户端)

            php;asp.net;jsp


URL:http://www.hao123.com/image/logo.gif


http协议版本:

    HTTP/0.9:原型版本,功能简陋

    HTTP/1.0:第一个广泛使用的版本,支持MIME;保持连接,有缓存功能

    HTTP/1.1: 增强了缓存功能,持久链接

    spdy(google)

   

     HTTP/2.0:


 MIME: Multipurpose Internet Mail Extesion(将非文本文件转换成文本文件)

  base64:将2进制数据编码成文本发送,并能够让接收方怀远回原来的格式   


工作机制:

    http请求

    http响应

    Web资源(内容):web resource

        静态文件:.jpg, .gif, .html, .txt, .js, .css, .mp3, .avi

        动态文件:.php, .jsp, 

    

    媒体:

    媒体类型(MIME类型):major/minor

        text/html

        text/plain

        image/jpeg

        image/gif


    URI: Uniform Resource Identifier

    URL: Uniform Resorce Locator,用于描述某服务器某特定资源的位置;

        Scheme://Server:Port/path/to/resource

        http://www.magedu.com/images/logo.jpg

    URN: Uniform Resource Naming


http报文:

    http事务:一次请求以及与其对应的响应

    http方法:get,put,head,post,delete


    http请求:

        http请求报文

        报文格式:

            <method><request-URL><version>

            <headers>


            <entity-boby>         

                

    http响应

        http响应报文

       报文格式:

            <version><status><reason-phrase>

            <headers>

            

            <entity-boby>


    <method>:请求方法,希望服务器端执行的动作,如get,put,head,options,trace

    <request-URL>:可以是相对资源或者是绝对资源

    <version>:协议版本格式http/<major>.<minor>,如:http/1.0

    <headers>:http首部

    <status>:状态码

    <reason-phrase>:原因短语,数字状态码易读信息

    <entity-boby>:主体部分

    

    HTTP请求方法:

        安全方法:get,head,options,trace,

            post

        危险方法:put,deletet,

    

        get:请求获取一个url下资源,需要服务器发送

        head:跟GET相似,但其不需要服务器发送资源,而只要报文首部

        post:支持HTML表单提交,表单中有用户填入的数据,这些数据会发送到服务器段,由服务器存储至某位置

        put:与GET相反,向服务器写入文档;例如:发布系统

        delete:删除资源你url指向的资源

        options:探测服务器端对某资源所支持的请求的方法

        trace:跟踪请求要经过的防火墙、代理和网关等


响应报文状态码

    1**:信息性状态码

    2**:成功状态码

            200:ok

    3**:重定向的状态码

           301: moved permanently永久重定向,响应报文中是使用首部“Location:URL”指定资源现在所处的位置 

            302:founnd临时重定向,响应报文中是使用首部“Location:URL”指定临时资源位置

            304:not modified没有修改,使用本地缓存;修改的话,发过来,条件式请求中使用

    4**:  客户端错误

            403:forbidden 拒绝访问,请求被服务器权限拒绝

            404:not found 服务器无法找到请求的url

            405:  Method not allowed 不允许使用此方法请求相应的url 

    5**: 服务器类的错误

           500:internal server error 服务器内部错误;服务器权限错,脚本无法执行

            502: bad gateway 代理服务器从上游收到一条伪响应

            503: serice unavaiabe: 服务器此时无法提供服务,但将来可能可用

    

首部格式:Name:Value

    首部分三类:

    通用首部:请求和响应都可以使用的;

    请求首部:定义请求首部

    响应首部:定义响应首部

    实体首部:定义主题部分

    扩展首部:非标准首部,可能有程序开发者创建的,例如x-forword-for


    通用首部:

        connection:定义C/S之间关于请求/响应的有关选项

            对于http/1.0,connection:keep-alive

        via:显示了报文经过的中间节点

        cache-control:缓存指示


    请求首部:

        client-IP:

        host:请求的主机名和端口号,虚拟主机环境下用于不同的虚拟主机

        referer:指明请求当前资源的原始资源url

        user-Agent:用户代理,使用什么工具发出的请求

    

        accep首部:标明客户端自己更倾向于支持的方式

            accept:指明服务器能发送的媒体类型

            accept-charset:支持使用的字符集    

            accept-Encoding:支持使用的编码方式

            accept-Language:支持使用语言

    

        条件请求首部:

            expect:客户端告诉服务端,自己期望的行为

            IF-Modfied-Since:是否在指定的时间以来,是否修改此资源;如果有,

            If-None-Match:没有一个匹配的


        跟安全相关的请求首部:

            Authorization:客户端提交给服务端的认证数据,如:账号和密码

            cookie:客户端发送给服务端身份标识

            cookie2

            

    响应首部:

        Age:

        server:向客户端标明服务器程序名称和版本

        

        协商首部:

            Accept-Ranges:对当前资源来讲,服务器所能接受的范围类型    

            vary:首部列表,服务器会根据列表中的内容挑选出 最适合的版本发送给客户端


        跟安全相关的响应首部:

            set-cookie:服务端在某客户端第一次请求时发给的令牌

            set-cookie2:服务端在某客户端第一次请求时发给的令牌

            www-Authentication:质询,即要求客户提供账号和密码


    实体首部:

        Location:资源的新位置

        Allow:允许对资源使用的请求方法

        内容首部:

            content-encoding

            content-language

            content-length

            content-Location

            content-range

            content-type

        缓存首部:

            Etag:实体标签

            expires:过期期限

            last-modified:上一次的修改时间


http协议:是以一种stateless(无状态)协议

    一次http事务结束后,连接即行断开

    web事务过程:    

    (1)建立连接

    (2)通过内核部分的4层,发现是请求是本地的web服务器的请求 ,传递给用户空间的web服务

    (3)用户空间接受请求

    (4)用户空间处理请求

    (5)访问内核的对象存储资源(硬盘)

    (6)响应完毕,回到用户空间构建响应,变成响应报文

    (7)通过内核部分的4层层层封装通过网路接口发送客户端,即发送响应

    (8)在构架响应的同时,记录事务处理过程(记录日志)

    pv:页面总的查看次数

    uv:服务器有多少不同ip


解决时延;提高性能:

    并行请求

    持久链接


http服务器程序:

    httpd (apache)--静态内容

    nginx 

    lighttpd


应用程序服务器:

    IIS

    tomcat, jetty, jboss, resin

    webshpere, weblogic, oc4j

    www.netcraft.com

    

一次完整的http请求处理过程:

    (1) 建立或处理连接:接收客户端请求或拒绝请求

    (2) 接收请求: 接收来自于网络的请求报文中对某资源的一次请求的过程;

            并发访问响应模型(Web I/O):

                单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个;多个请求被串行响应;

                多进程I/O结构:并行启动多个线程,每个线程响应一个请求;一个用户会请求多个请求;

                复用I/O结构:一个进程响应n个请求;

                    多线程模型:一个进程生成N个线程,每个线程响应一个用户请求;

                    事件驱动:event-driven;事件回调对每个线程追踪

                复用的多进程I/O结构:启动多个(m)进程,每个进程响应n个请求;

     (3) 处理请求:对请求报文进行解析,并获取请求的资源及请求方法等相关信息

            元数据:请求报文首部

            <method> <URL> <VERSION>

            Host: www.magedu.com   请求的主机名称

            Connection:

    (4) 访问资源:获取请求报文中请求的资源

            web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源;这些资源放置于本地文件系统某路径下,此路径通常称为DocRoot

                例如:            

                /var/www/html/

                images/1.jpg

                http://www.magedu.com/images/1.jpg

                web服务器资源路径映射方式:

                (a) docroot

                (b) alias

                (c) 虚拟主机docroot

                (d) 用户家目录docroot

    (5) 构建响应报文

            资源的MIME类型:

                显式分类

                魔法分类

                协商分类         

            URL重定向:

            web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径;

    (6) 发送响应报文

            持久

            非持久

    (7) 记录日志


httpd的安装配置和使用:

httpd: apache

a  patchy server = apache

ASF: apache software foundation


httpd的特性:

    组成:core + modules模块化

    DSO: Dynamic Shared Object 动态

    MPM:Multipath Processing Modules

        prefork:多进程模型,每个进程响应一个请求;

        一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达;最大不会超过1024个;

        worker:多线程模型,每个线程响应一个请求;

        一个主进程:生成多个子进程,每个子进程负责生个多个线程,每个线程响应一个请求;也会预先生成多个空闲线程,随时等待请求到达;最大不会超过1024个;(复用多进程)

            m进程,n线程:m*n

        event:事件驱动模型,每个线程响应n个请求;

        一个主进程:生成m个子进程,每个进程直接n个请求;

        m*n

        httpd-2.2: event为测试使用

        httpd-.24:event可生产使用


httpd的功能特性:

    虚拟主机:IP、Port、FQDN

    CGI:Common Gateway Interface,通用网关接口;

    反向代理

    负载均衡

    路径别名

    丰富的用户认证机制:basic;digest

    支持第三方模块


安装httpd: httpd.apache.org

    rpm包

    源码编译安装


rpm包安装的httpd的默认工作目录(根目录)/etc/httpd


程序环境

配置文件:

    主配置文件:/etc/httpd/conf/httpd.conf

    分段配置文件:/etc/httpd/conf.d/*.conf

    服务脚本:

    /etc/rc.d/init.d/httpd

    脚本的配置文件:/etc/sysconfig/httpd

    模块文件目录:

    /etc/httpd/modules --> /usr/lib64/httpd/modules

    主程序文件:

    /usr/sbin/httpd (prefork)

    /usr/sbin/httpd.worker (worker)

    /usr/sbin/httpd.event (event)

wKioL1YbK_yjQCnZAAO1vQOatoU364.jpg

wKioL1YbLG-h4h1GAAEzhQnVjyo704.jpg


    日志文件目录:/var/log/httpd

        access_log: 访问日志文件

        error_log: 错误日志

    站点文档目录:

        /var/www/html

wKioL1YbMEPDN9-KAAQ7TWrKDb4751.jpg

wKiom1YbMJ-z5urcAAV2zyOnkB8338.jpgwKiom1YbQ3TD3x_2AASifH7tF_w369.jpg

wKioL1YbQ5DA4hSgAAFwpg7HQ4Y543.jpg

wKioL1YbRKXDe4ahAALKCdNiWEE932.jpg

wKiom1YbRLjA_ZwfAAN6bt9Id00030.jpg

wKiom1YbRV2hKbQiAAboJ-IdGyQ102.jpg


配置文件:

    Directive Value

    指令      值 

wKiom1YbZ_zy4I7_AAXiI0qoVbw281.jpg

### Section 1: Global Environment

### Section 2: 'Main' server configuration

### Section 3: Virtual Hosts


注意:'Main' server和Virtual Hosts不能同时启用;默认启用的是'Main' server;


1、指定监听地址和端口

    Listen [IP:]80

    

    (1) IP省略时表示监听本机上所有可用的IP地址;

    (2) Listen指令可以出现多次,用于指明多个不同的监听端口或套接字:

    Listen 172.16.100.11:80

    Listen 172.16.100.35:80

    Listen 172.16.100.11:8080


wKiom1YbaXaw786rAARp87uV2iI644.jpg

wKiom1Yba4PRUE9nAAJXpI8HPUU489.jpg

wKioL1YbbEPyiIPKAAKFQTzSaeM164.jpg

wKioL1YbbPXR9o1FAAI2bR0e5qg611.jpg


2、持久连接相关

    持久连接:连接建立后,每个资源获取结束不会断开连接,而继续等待其它资源请求并完成传输;

        如何断开?

            数量限制:如100个

            时间限制:如1秒

        劣势:对并发访问量较大的服务器,开持久连接会有些请求得不到服务;

        改进:减短,httpd-2.4支持毫秒级

    

    非持久连接:每个资源都是单独通过专用的连接进行获取

wKioL1Ybc3LT6dxeAAIoPIYx28s782.jpg   

wKioL1YbdgfxAhEDAANR6Feo5pU446.jpg

测试

wKioL1YbddGxTaGRAANjuE7eISM911.jpg  

    

测试持久链接:

# telnet Server 80

GET /URL HTTP/1.1

Host: Server

wKioL1Ybx47RY2XoAAMyiyO1Obg398.jpg

wKioL1Ybx1PiU9AHAAFnZxyWkY8603.jpg

wKioL1Ybyd3DmkooAAIhAI66FbE688.jpg

wKiom1YbyuXSxiEdAAQ5C_nx0Sk633.jpg

wKioL1Yby5iBmC_gAAPdmmcR6AY082.jpg

 

3、MPM

    多路处理模块:并发请求响应的不同实现

    prefork, worker, event

wKiom1YcauqgZCttAAOX5ZlBVyc083.jpg


    httpd-2.2 不支持同时编译多个不同的MPM,rpm安装的httpd-2.2提供了三个文件分别用于实现提供对不同的MPM的支持;确认方法:

    # ps aux | grep httpd

wKiom1Ycal6g5uHfAAPgjX5QwCM827.jpg

wKiom1YcapuRwh38AAPPM9Nv3vY211.jpg


    默认为/usr/sbin/httpd,其为prefork; 

    查看模块列表:

    httpd -l: 查看静态编译的模块

    httpd -M: 查看所有模块,包括静态编译和DSO模块(share)

wKiom1YcnLqA5GA7AAMa5SUxn4M748.jpg

wKiom1YcbOyAUExaAAMTz4BOthY974.jpg


    更换支持不同的MPM的主程序:

    编辑/etc/sysconfig/httpd

    启用变量:HTTPD

wKiom1YccCTAs8jnAAJKh_kRJU0706.jpg

wKioL1YccI6gX3cGAAN_4KuZSD4109.jpg

wKioL1YccU6yXEEwAARyYmlpKwg674.jpg

wKioL1YccPmQ-101AARCjqyK_lg522.jpg

 

    # prefork MPM    主进程监听,子进程响应

    # StartServers: number of server processes to start

    # MinSpareServers: minimum number of server processes which are kept spare

    # MaxSpareServers: maximum number of server processes which are kept spare

    # ServerLimit: maximum value for MaxClients for the lifetime of the server

    # MaxClients: maximum number of server processes allowed to start

    # MaxRequestsPerChild: maximum number of requests a server process serves

    <IfModule prefork.c>

    StartServers       8 开机启动8个进程

    MinSpareServers    5 最小空闲进程

    MaxSpareServers   20 最大空闲进程

    ServerLimit      256 在服务的最大生命周期中最大请求用户进程的最大响应用户请求

    MaxClients       256 最大请求服务用户请求连接

    MaxRequestsPerChild  4000 最大进程服务次数

    </IfModule>

wKiom1Ycmh7hlx3lAAKOOQPDpao785.jpg

wKioL1YcdyeyJ5z2AANo78QloxM935.jpg


    # worker MPM    主进程启动子进程,子进程在启动线程响应

    # StartServers: initial number of server processes to start

    # MaxClients: maximum number of simultaneous client connections

    # MinSpareThreads: minimum number of worker threads which are kept spare

    # MaxSpareThreads: maximum number of worker threads which are kept spare

    # ThreadsPerChild: constant number of worker threads in each server process

    # MaxRequestsPerChild: maximum number of requests a server process serves

    <IfModule worker.c>

    StartServers         4 启动时,子进程数

    MaxClients         300 最大用户连接数

    MinSpareThreads     25 最小空闲线程数

    MaxSpareThreads     75 最大空闲线程数

    ThreadsPerChild     25 子进程生成线程数

    MaxRequestsPerChild  0 子进程响应请求数不限制

    </IfModule>

wKioL1YcmheSJvmsAAJjzbxGZyo303.jpg

wKiom1YcluuAlP0sAAJJ-nkFvRY086.jpg

wKiom1YcmSOSs-tSAASYf3_WGOI165.jpg


查看http连接数

wKiom1Ycl06yU3DvAANqc6U_aRI795.jpg


4、DSO

    配置指令模块加载:

    LoadModule <module_name> <module_path>

    

    模块路径:可使用相对路径

    相对于ServerRoot指令指向的位置而言;

    

注意:建议使用service httpd reload重新装载配置文件

wKiom1YcnVqgB3CPAAYQiBsE46o821.jpg

wKioL1Ycnd7A0QgPAAYMyobAu4s848.jpg

测试

wKioL1YcnkLApYcoAAV8c_ETcDs372.jpg

wKioL1YcnsuB5auBAAQtjO9tHao334.jpg

wKiom1YcntCxJTrQAAU7X3nhE_Y732.jpg

wKioL1YcnyDwJXOlAAQd9oP-aGs840.jpg


5、定义'Main' server的文档页面路径

    DocumentRoot指令


    文档路径映射:

        DocumentRoot指向的路径为URL起始的位置

        http://server/images/1.jpg

wKiom1YcoGiibzU9AAFqxnn8KiU480.jpg

wKioL1YcoJCCAZqKAACO3G5FJuY488.jpg

wKioL1YcoSvSd_rdAAJmODkrWk4516.jpg

wKioL1Ycob2Q5MU-AAH3LvAX_IQ796.jpg

wKiom1YcokuAGDCEAAC4RqYIijM841.jpg


6、站点路径访问控制

    访问控制机制:

        基于来源地址

        基于账号


    定义的方式有两种:

        文件系统路径:

        <Directory "/PATH/TO/SOMEDIR">

        ...

        </Directory>

        URL路径:

        <Location "/URL">

        ...

        </Location>


7、Directory中的访问控制定义

(1) Options

    Indexes: 当访问的路径下无默认主页面文件存在,且没有指定具体要访问的资源时,会将此路径下的所有资源以列表呈现给用户;非常危险,不建议使用;

    FollowSymLinks:如果某页面文件是为指向DocumentRoot之外路径上的其它文件时,将直接显示目标文件的内容;不建议使用;

    None: none

    All: 所有的都启用;

wKiom1YcqBWDj-TaAAC8dMGYd6I213.jpg

wKiom1YcqDyB7rnaAAJaaKmqS3s333.jpg

wKiom1YcqOiDli9yAAFcCgGlF_k562.jpg

wKioL1YcrbOha6goAARedahdOsc374.jpg

wKiom1YcrZXx_nzLAAGTPnOPnT4383.jpg


(2) 基于来源地址访问控制

    Order: 检查次序

        Order Allow Deny:只有明确Allow的来源地址,才允许访问,其它的均为Deny

        Order Deny Allow: 

     Allow from:允许访问的来源地址

     Deny from:拒绝访问的来源地址

                       

    Order Allow Deny

    Deny from 172.16.100.2

    Allow from 172.16.0.0/16

        

    from后可跟上的地址格式:

    IP地址;

    网络地址:

        172.16

        172.16.0.0

        172.16.0.0/16

        172.16.0.0/255.255.0.0

wKiom1Ycs5zQfaBRAADGDxrlHr8162.jpg

wKiom1Ycs2jB_4fCAAJEt5KxOlk688.jpg

wKiom1YcsuyT5RapAAY-9-z7Bqk021.jpg


8、定义默认的主页面

    DirectoryIndex index.html index.html.var

    左而右,找到首次匹配到的文件;就将其做为默认主页面返回。

wKiom1YctiTSbuTeAAElz5FbTiU658.jpg

wKioL1YctnSjWY3zAAIsU79taA4366.jpg

wKioL1YctrOTwBryAAXI9i8PhBk213.jpg


9、配置日志

    错误日志:

        ErrorLog logs/error_log

        LogLevel warn

wKioL1Yct3exPQMXAAIe0Lf5-dQ846.jpg    

    访问日志:要定义日志格式

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

        CustomLog logs/access_log combined

        

        %h: Remote host,客户端主机

        %l: Remote logname (from identd, if supplied). 客户用户通过identd登录时使用名称;一般为-,表示空;

        %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:响应状态状态码

        %b: Size of response in bytes, excluding HTTP headers,响应报文的大小,单位为字节;不包含首部信息;

        %{Referer}i:记录Http首部Referer对应的值;即访问入口,从哪个页面跳转至此页面;

        %{User-Agent}i:记录http首部User-Agent对应的值;即浏览器类型;

    

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

wKiom1YcuozBwdsCAAIyUeXFmzY350.jpg


10、路径别名

    DocumentRoot "/var/www/html"

        download

            mp3

                1.mp3

        bbs

            index.html

    

    URL: http://www.magedu.com/download/mp3/1.mp3

    URL: http://www.magedu.com/bbs/index.html

    

    Alias /URL/ "/path/to/some_directory"


例如:Alias /bbs/ "/web/bbs/htdocs/"

URL: http://www.magedu.com/bbs/index.html --> /web/bbs/htdocs/index.html


Alias /images/ "/web/pics/"

URL: http://www.magedu.com/images/a.jgp --> /web/pics/a.jpg

wKioL1YcwM-jNbh7AAG9nelBVUQ235.jpg

wKiom1YcwLDA0PlJAAGS6WSc3E0283.jpg

wKiom1YcwUzQR_X5AAKMcTrr83E156.jpg

wKioL1YcwdXiYktbAAUREDMl4ac303.jpg

wKioL1YcwdXhH-OKAAFbZDwRtTk203.jpg

wKiom1YcwhugHmQFAAXIiiK7R2Q280.jpg

wKiom1YcwwWy-rPEAAOR937j52Q265.jpg

wKiom1YcxfyjIyH5AAQrvOG3oOo760.jpg

wKioL1Ycxi_AVkn9AAFQR7qxJCA344.jpg


11、设定默认字符集

    AddDefaultCharset UTF-8

    

    常用字符集:GBK, GB2312, GB18030

    

12、基于用户的访问控制

    质询:

    WWW-Authenticate: 服务器用401状态拒绝客户端请求,说明需要用户提供用户名和密码;弹出对话框;

    认证:

    Authorization:客户端用户填入账号密码后再次发请求至服务器;认证通过,则请求授权;

    

    DocumentRoot "/var/www/html"

        images

        bbs

        employee/

    

    安全域:需要用户认证后方能访问的路径

        应该有其名称,用于向用户通知此认证的原因等;

    

    http协议支持的认证方式:

        basic:基本

            BASE64

        digest:摘要

    

    basic认证机制的实现

    (1) 定义安全域

        <Directory "/data/web/html/employee">

           Options None

           AllowOverride None

           AuthType Basic

           AuthName "Employee Infomation, only for employee"

           AuthUserFile /etc/httpd/users/.htpasswd

           Require user tom jerry

        </Directory>

        

    Require valid-user: 所有位于AuthUserFile文件中定义的用户都允许登录;

    Require user user1 user2 ...: 仅允许user1,user2等出现AuthUserFile文件中定义的特定几个用户登录;

       

    (2) 提供用户的账号文件

    htpasswd命令用于维护此文件

    

    htpasswd [ -c ] [ -m ] [ -D ] passwdfile username

    -c: 添加第一用户时创建此文件;

    -m: 以md5格式加密用户密码存放;

    -s: 以sha格式加密用户密码存放;

    -D:删除指定用户

注意: 创建用户时,第一个用户需要用-c;以后就不需要了;虚拟用户:即非系统用户;


    (3) 组认证

     <Directory "/data/web/html/employee">

       Options None

       AllowOverride None

       AuthType Basic

       AuthName "Employee Infomation, only for employee"

       AuthUserFile /etc/httpd/users/.htpasswd

       AuthGroupFile /etc/httpd/users/.htgroup

       Require group GRP1 GRP2 ...

    </Directory>

    

    组文件:

    每行定义一个组,格式

    Grp_Name: User1 User2 ...


示例:

wKiom1YdGNPQjYNEAADfoNTrC5s326.jpg

wKioL1YdGRvQRJujAAEgDUqybCo814.jpg

wKiom1YdIX6TGavhAAG4B2ziEyQ785.jpg

wKiom1YdHNTAAehzAAJrgIvXwK4822.jpg

wKioL1YdHkWC95aIAAV5O9SWFA0742.jpg

wKiom1YdHlDRmIyqAAF9IMRcKMQ653.jpg

wKioL1YdHpTzAtlZAAC1vrWhYu0971.jpg

wKioL1YdIgXjxMZiAAG9yaUYyuo982.jpg

wKiom1YdIf6yLlM4AABlawi7YZ8952.jpg

wKioL1YdJKDTFJfOAAMfb77qlos847.jpg

wKioL1YdJTvyoLfkAAQU_fzI4tg025.jpg

wKiom1YdJRChxSC2AACH-fkZBrU636.jpg

wKiom1YdJcnis7QhAAKTaYpP1dw020.jpg

wKioL1YdJeewfZR-AAFKm1W1Vio134.jpg

wKiom1YdJcjgK-i6AACvFZ9fpRE511.jpg



13、虚拟主机


    一个物理器可以服务于多个站点,每个站点可通过一个或多个虚拟主机来实现;

    

    httpd三种类型的虚拟主机:

        基于IP

        基于Port

        基于FQDN

        

注意:得首先关闭'Main' server

    方法:注释DocumentRoot指令即可;

    

    定义虚拟主机的方法:

    <VirtualHost "IP:PORT">

    ServerName 

    ServerAlias

    DocumentRoot

    </VirtualHost>

    

注意:大多数可用于全局或'main' server中的指令,都可以定义有VirtualHost中;


示例1:基于IP

<VirtualHost 172.16.100.11:80>

   ServerName www.a.com

   DocumentRoot /vhost/a.com/htdocs/

</VirtualHost>


<VirtualHost 172.16.100.21:80>

   ServerName www.b.org

   DocumentRoot /vhost/b.org/htdocs/

</VirtualHost>


<VirtualHost 172.16.100.31:80>

   ServerName www.c.net

   DocumentRoot /vhost/c.net/htdocs/

</VirtualHost>

注意:本机要配置上所有IP地址并能够用于通信;

wKioL1YduI6wnEHcAABmxRm0PXk984.jpg

wKioL1YduSvB5fQJAAEkV1OC4PU484.jpg

wKiom1YduVyC33JyAAV465AW_gQ694.jpg

wKiom1YduZTQdtyeAAQXZbJEPD8263.jpg

wKioL1YdueOQhDBSAAPQ36Dgf_w739.jpg

wKioL1Yduh6TSFt7AAQrtdmxdAw419.jpg


示例2:基于Port

<VirtualHost 172.16.100.11:80>

   ServerName www.a.com

   DocumentRoot /vhost/a.com/htdocs/

</VirtualHost>


<VirtualHost 172.16.100.11:808>

   ServerName www.b.org

   DocumentRoot /vhost/b.org/htdocs/

</VirtualHost>


<VirtualHost 172.16.100.11:8080>

   ServerName www.c.net

   DocumentRoot /vhost/c.net/htdocs/

</VirtualHost>


注意:httpd要监听这里指明的所有端口  Listen

wKioL1YduI6wnEHcAABmxRm0PXk984.jpg

wKiom1Yduqih-EsSAAB6f0Uo2-A455.jpg

wKiom1YduvnBv1rEAAE94ykMz0M372.jpg

wKioL1Yduz2h8YL2AAEnBUsuWXo548.jpg


示例3:混用IP和Port

<VirtualHost 172.16.100.11:80>

   ServerName www.a.com

   DocumentRoot /vhost/a.com/htdocs/

</VirtualHost>


<VirtualHost 172.16.100.21:80>

   ServerName www.b.org

   DocumentRoot /vhost/b.org/htdocs/

</VirtualHost>


<VirtualHost 172.16.100.11:8080>

   ServerName www.c.net

   DocumentRoot /vhost/c.net/htdocs/

</VirtualHost>

wKioL1YduI6wnEHcAABmxRm0PXk984.jpg

wKiom1Yduqih-EsSAAB6f0Uo2-A455.jpg

wKioL1Ydu37BGFRnAAFKY1m6Z4A666.jpg

wKioL1Ydu_rhAbBHAAEs79fDpLo040.jpg


示例4:基于FQDN


NameVirtualHost 172.16.100.11:80


<VirtualHost 172.16.100.11:80>

   ServerName www.a.com

   DocumentRoot /vhost/a.com/htdocs/

</VirtualHost>


<VirtualHost 172.16.100.11:80>

   ServerName www.b.org

   DocumentRoot /vhost/b.org/htdocs/

</VirtualHost>


<VirtualHost 172.16.100.11:80>

   ServerName www.c.net

   DocumentRoot /vhost/c.net/htdocs/

</VirtualHost>

wKiom1YdvROSX56gAABv94wHDHM551.jpg

wKiom1YdvPiizbYKAAB7BzoO7SE020.jpg

wKioL1YdvMDyQMnyAABONpm3iMU689.jpg

wKiom1YdvIvCNpAOAAFLMG47WHo174.jpg

wKioL1YdvfbgOHw0AABVgRP0mFQ562.jpg

wKiom1Ydvb6gBOZgAAFmlL-n02s090.jpg

wKiom1YdvgGSB7MvAAMZwMxckFo005.jpg

wKiom1YdvlvywaBrAAEFsGqLri8878.jpg

wKiom1Ydv1PTWU8rAAHICoyXdAo882.jpg

wKiom1Ydvyewe9jfAAFu25fw2No767.jpg

wKioL1Ydv-GQEBskAABa-6zLWME274.jpg

wKiom1Ydv7SzdFrqAAGS8CjIgu0455.jpg

wKioL1YdwCuy-_Z3AAH4mYgqcYY186.jpg


注意:额外经常用于每个虚拟主机的配置有

        ErrorLog

        CustomLog

        <Directory>

        <Location>

        ServerAlias


14、内置的status页面

    <Location /server-status>

       SetHandler server-status

       Order deny,allow

       Deny from all

       Allow from 172.16.0.0/16

    </Location>

wKiom1Ydw7uSqfjWAAGnPNcUVP8135.jpg

wKioL1Ydw8DgbggiAABlNgPCeac144.jpg

wKiom1Ydw5KBeFvwAAHm_d5BPE8863.jpg

wKioL1YdxFawauaNAABTYV6Gyz4172.jpg

wKioL1YdxZGS4q2XAAIup8ioSHM169.jpg

wKioL1YdxcmjXhyFAAG6UtNF4eI692.jpg


wKioL1YdxtHCD9ZVAAFgR4bhr24688.jpg

wKiom1YdxtTjglhAAAP7tNHsoqU825.jpg



你可能感兴趣的:(httpd)