linux下httpd服务名词解释和http及https服务器搭建

1.HTTP: HyperText Transfer Protocol: 超文本传输协议

2.URI: Uniform Resource Indentifier,统一资源标示 全局范围内,路径格式上的统一

3.URL:Uniform Resource Locator:统一资源定位

4.web资源:多个资源很可能被整合为一个html文档

5.MIME: Multipurpose Internet Mail Extension, 多用途互联网邮件扩展

  将非文本数据在传输前重新编码(Base64)为文本格式,接收方能够用相反的方式将其重新

   还原为原来的格式,还能够调用相应的程序来打开此文件

6.动态网页:包含静态内容和动态内容

   服务器端存储的文档非HTML格式,而是编程语言开发的脚本,脚本接受参数之后

   在服务器运行一次,运行完成之后会生成HTML格式的文档,把生成的文档发给客户端;

7.HTTP报文:分为请求报文和响应报文

 7.1.请求报文语法:

 <method> <request-URL> <version>

 <headers>


 <entity-body> 

 例如:请求报文:

 GET / HTTP/1.1

 Host: www.willow.com

 Connection: keep-alive


 7.2.响应报文语法:

 <version> <status> <reason-phrase>

 <headers>


 <entity-body>


 例如:响应报文

 HTTP/1.1 201 OK

 X-Powered-By: PHP/5.2.17

 Vary: Accept-Encoding,Cookie,User-Agent

 Cache-Control: max-age=3, must-revalidate

 Content-Encoding: bzip2

 Content-Length: 6931


报文格式解释:第一行通常称作报文“起始行(start line)”;后面的标签格式的内容称作

 首部域(Header field),每个首部域都由名称(name)和值(value)组成,中间用逗号分隔。

 另外响应报文通常还有一个称作Body的信息主体,即响应给客户端的内容。

8.状态代码:

 1xx: 纯信息

 2xx: “成功”类的信息 (200, 201, 202)

 3xx:重定向类的信息 (301, 302, 304)

 4xx: 客户端错误类的信息 (404)

 5xx:服务器端错误类的信息

9.Web服务器的主要操作

 9.1.建立连接——接受或拒绝客户端连接请求;

 9.2.接收请求——通过网络读取HTTP请求报文;

 9.3.处理请求——解析请求报文并做出相应的动作;

 9.4.访问资源——访问请求报文中相关的资源;

 9.5.构建响应——使用正确的首部生成HTTP响应报文;

 9.6.发送响应——向客户端发送生成的响应报文;

 9.7.记录日志——当已经完成的HTTP事务记录进日志文件;

10.Web服务器处理并发连接请求的架构方式

 10.1.单线程web服务器(Single-threaded web servers)

此种架构方式中,web服务器一次处理一个请求,结束后读取并处理下一个请求。在某请求处理过程中,其它所有的请求将被忽略,因此,在并发请求较多的场景中将会出现严重的并发问题。

 10.2.多进程/多线程web服务器

此种架构方式中,web服务器生成多个进程或线程并行处理多个用户请求,进程或线程可以按需或事先生成。有的web服务器应用程序为每个用户请求生成一个单独的进程或线程来进行响应,不过,一旦并发请求数量达到成千上万时,多个同时运行的进程或线程将会消耗大量的系统资源。

 10.3.I/O多路复用web服务器

为了能够支持更多的并发用户请求,越来越多的web服务器正在采用多种复用的架构——同步监控所有的连接请求的活动状态,当一个连接的状态发生改变时(如数据准备完毕或发生某错误),将为其执行一系列特定操作;在操作完成后,此连接将重新变回暂时的稳定态并返回至打开的连接列表中,直到下一次的状态改变。由于其多路复用的特性,进程或线程不会被空闲的连接所占用,因而可以提供高效的工作模式。

 10.4.多路复用多线程web服务器

将多进程和多路复用的功能结合起来形成的web服务器架构,其避免了让一个进程服务于过多的用户请求,并能充分利用多CPU主机所提供的计算能力。

Web代理服务器工作于web客户端和web服务器之间,它负责接收来自于客户端的http请求,并将其转发至对应的服务;而后接收来自于服务端的响应,并将响应报文回送至客户端。

11.httpd服务:后续对httpd维护,即一次次打补丁,称为A Patchy Server,称为apache 

         所以httpd属于apache一种服务,只不过现在人说apache都认为是httpd服务

    apache官网: www.apache.org

    httpd网址: http://httpd.apache.org

12.httpd特点:事先创建进程

 按需维持适当的进程

 模块块设计,核心比较小,各种功能都模块添加(包括php)

 支持运行配置,支持单独编译模块

 支持多种方式的虚拟主机配置

13.虚拟主机:

 基于IP的虚拟主机; 格式:IP1:80  IP2:80, IP不同,但端口一样

 基于端口的虚拟主机;格式: IP:80 IP:8080, IP相同,但端口不一样

 基于域名的虚拟主机;格式: *:80,        IP相同,但Servername不同

 支持https协议 (mod_ssl)

 支持用户认证

 支持基于IP或主机名的ACL

 支持每目录的访问控制

 支持URL重写

14.httpd相关文件路径:

     /usr/sbin/httpd(MPM: prefork)

     httpd: root, root (主进程属主属组)

     httpd: apche, apache (工作进程属主属组)

     /etc/rc.d/init.d/httpd 脚本文件

     /etc/httpd: 工作根目录,相当于程序安装目录

      /etc/httpd/conf: 配置文件目录

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

     /etc/httpd/conf.d/*.conf 此类文件将会被httd.conf包含并调用

     /etc/httpd/modules: 模块目录

     /etc/httpd/logs --> /var/log/httpd: 日志目录

          日志文件有两类:访问日志access_log,错误日志:err_log

     /var/www/html   客户端访问服务器页面存放路径

/var/www/cgi-bin 动态网页路径

        cgi: Common Gateway Interface 通用网关入口

        fastcgi: 

    Port: (80/tcp), (ssl: 443/tcp)

15.httpd.conf配置文件解释:

     格式:directive value   #指令  值 

       指令不区分字符大小写

       值区分大小写

  15.1.MPM: Multi Path Modules,叫做多处理模块

        mpm_winnt:基于windows的

        prefork (一个请求用一个进程响应,大并发环境下消耗资源较多)

        worker  (一个请求用一个线程响应, 启动多个进程,每个进程生成多个线程))

        event   (一个进程处理多个请求,基于事件来实现)

   URL路径是相对于DocumentRoot而言的。

  15.2.Options:

       None: 不支持任何选项

       Indexes: 允许索引目录

       FollowSynLinks: 允许访问符号链接指向的原文件

       Includes: 允许执行服务端包含(SSI)

       ExecCGI: 允许运行CGI脚本

       All: 支持所有选项

  15.3.Order:用于定义基于主机的访问功能的(IP或网络地址或主机定义访问控制机制)

       Order allow,deny

       allow from ALL

     例如:拒绝172.16.1.0/24子网段访问apache服务器

       Order deny,allow

       Deny from 172.16.0.0/24


  15.4.AllowOverride AuthConfig:基于用户或组认证访问apache服务器

   例如:基于用户的认证

    AuthType Basic

    AuthName "提示字符串可任意"

    AuthUserFile /etc/httpd/conf/htpasswd   #自定义用户名密码文件路径及名字

    Require user 用户名                #仅允许指定用户名访问服务器

   #Require valid-user   #允许/etc/httpd/conf/htpasswd所有用户访问服务器

   例如:基于组的认证

    AuthType Basic

    AuthName "提示字符串可任意"

    AuthUserFile  /etc/httpd/conf/htpasswd  #自定义用户名密码文件路径及名字

    AuthGroupFile /etc/httpd/conf/group     #自定义用户组路径及名字

    Require group 组名                 #允许指定组内所有用户访问服务器

 15.5.htpasswd命令:创建httpd用户认证的命令

       -c:创建存放用户密码文件

       -m:密码md5单向加密

       -D:删除指定用户

   例如:第一次创建密码文件并增加willow用户:

     htpasswd -c -m /etc/httpd/conf/htpasswd willow 

   例如:当已创建密码文件后,再新增用户:

     htpasswd -m  /etc/httpd/conf/htpasswd user1

   例如:删除user1用户:

     htpasswd -D  /etc/httpd/conf/htpasswd user1

 15.6.Alias:路径别名:

      Alias /URL "local_path"

 15.7.虚拟主机:httpd.conf配置文件中分为中心主机和虚拟主机配置,

     此两种主机方式不能同时使用,即只能用其中之一

      取消中心主机方法:注释中心主机的DocumentRoot,在其前面加#号即可

      开启虚拟主机方法:默认是关闭虚拟主机,NameVirtualHost *:80,把其前面#号删除即可

   实例:提供两个基于域名的虚拟主机:

    a.www1.willow.com,页面文件目录为/var/www/html/www1;

     仅允许willow和tom等认证用户可访问本服务器

     错误日志为/var/log/httpd/www1.err,

     访问日志为/var/log/httpd/www1.access;

    b.www2.willow.com,页面文件目录为/var/www/html/www2;

     拒绝1.1.1.144这台主机访问本服务器

     错误日志为/var/log/httpd/www2.err,

     访问日志为/var/log/httpd/www2.access;

    c.两个虚拟主机建立各自的主页文件index.html,内容分别为其对应的主机名;

配置如下 :

nameVirtualHost *:80

 

<VirtualHost *:80>

    DocumentRoot  "/var/www/html/www1"

    ServerName    www1.willow.com

    ErrorLog     /var/log/httpd/www1.err

    CustomLog    /var/log/httpd/www1.access combined

    <Directory "/var/www/html/www1">

         Options none

         AllowOverride authconfig

         AuthType basic

         AuthName "willow1.com"

         AuthUserFile "/etc/httpd/conf/htpasswd"

         Require valid-user

    </Directory>

</VirtualHost>

<VirtualHost *:80>

    DocumentRoot  "/var/www/html/www2"

    ServerName    www2.willow.com

    ErrorLog     /var/log/httpd/www2.err

    CustomLog    /var/log/httpd/www2.access combined

    <Directory "/var/www/html/www2">

         Options none

         AllowOverride none

         Order deny,allow

         deny from 1.1.1.144

    </Directory>

</VirtualHost>

注意:1.启动虚拟主机功能前提,必须将中心主机DocumentRoot注释掉

    2.对应目录下www1和www2目录要手动创建,index.html也要手动创建

    3.htpasswd命令创建认证用户及文件,如不明白请向上翻看此命令详解

16.https服务配置

 https基于443端口加密访问

 yum install -y mod_ssl

 vim /etc/httpd/conf.d/ssl.conf,主要修改以下几项:

  <VirtualHost _default_:443>               #可修成指定IP的443端口         

   DocumentRoot "/var/www/html/www"   

   ServerName www.willow.com               

   SSLCertificateFile /etc/httpd/ssl/http.crt     #证书路径

   SSLCertificateKeyFile /etc/httpd/ssl/http.key   #私钥路径

  </VirtualHost>

 注意:证书的制作和申请如果不明白,请查看我之前博客