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/p_w_picpath/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

        p_w_picpath/jpeg

        p_w_picpath/gif


    URI: Uniform Resource Identifier

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

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

        http://www.magedu.com/p_w_picpaths/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/

                p_w_picpaths/1.jpg

                http://www.magedu.com/p_w_picpaths/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)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


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

        access_log: 访问日志文件

        error_log: 错误日志

    站点文档目录:

        /var/www/html

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


配置文件:

    Directive Value

    指令      值 

Wed Server之httpd基础(1)

### 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


Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


2、持久连接相关

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

        如何断开?

            数量限制:如100个

            时间限制:如1秒

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

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

    

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

Wed Server之httpd基础(1)   

Wed Server之httpd基础(1)

测试

Wed Server之httpd基础(1)  

    

测试持久链接:

# telnet Server 80

GET /URL HTTP/1.1

Host: Server

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

 

3、MPM

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

    prefork, worker, event

Wed Server之httpd基础(1)


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

    # ps aux | grep httpd

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


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

    查看模块列表:

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

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

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


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

    编辑/etc/sysconfig/httpd

    启用变量:HTTPD

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

 

    # 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>

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


    # 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>

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


查看http连接数

Wed Server之httpd基础(1)


4、DSO

    配置指令模块加载:

    LoadModule <module_name> <module_path>

    

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

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

    

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

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

测试

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


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

    DocumentRoot指令


    文档路径映射:

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

        http://server/images/1.jpg

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


6、站点路径访问控制

    访问控制机制:

        基于来源地址

        基于账号


    定义的方式有两种:

        文件系统路径:

        <Directory "/PATH/TO/SOMEDIR">

        ...

        </Directory>

        URL路径:

        <Location "/URL">

        ...

        </Location>


7、Directory中的访问控制定义

(1) Options

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

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

    None: none

    All: 所有的都启用;

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


(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

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


8、定义默认的主页面

    DirectoryIndex index.html index.html.var

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

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


9、配置日志

    错误日志:

        ErrorLog logs/error_log

        LogLevel warn

Wed Server之httpd基础(1)    

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

        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

Wed Server之httpd基础(1)


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 /p_w_picpaths/ "/web/pics/"

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

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


11、设定默认字符集

    AddDefaultCharset UTF-8

    

    常用字符集:GBK, GB2312, GB18030

    

12、基于用户的访问控制

    质询:

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

    认证:

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

    

    DocumentRoot "/var/www/html"

        p_w_picpaths

        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 ...


示例:

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)



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地址并能够用于通信;

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


示例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

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


示例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>

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


示例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>

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


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

        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>

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)

Wed Server之httpd基础(1)


Wed Server之httpd基础(1)

Wed Server之httpd基础(1)