Web服务器也成为www服务器,其主要功能是提供网上信息浏览功能,而www是采用客户端/服务器结构,其作用是整理和储存各种www资源,并响应客户端软件的请求,把客户所需要的资源传到客户端的操作系统上。

Web服务所使用的是http协议,工作在OSI七层参考模型的应用层。
从http协议的诞生一直延续到现在一共存在三个版本:0.9;1.0;1.1
在http/1.1中共定义了8中动作:OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE、CONNECT;
在HTTP服务器回应客户端状态码主要有以下几个:
1、1xx消息:代表请求已被接受,一般为临时响应;
2、2xx消息:正常响应信息,这类状态码代表请求已成功被服务器接受、理解并接受;
3、3xx消息:重定向,这类状态码代表客户端需采取进一步的操作才能完成请求;
4、4xx消息:请求错误,这类状态码一般代表了客户端发生了错误,阻碍了服务器的处理;
5、5xx消息:服务器错误,这类状态码代表服务器在处理请求的过程有错误或者有异常状态发生;
Apache服务器,是作为web服务器的一种,因为其运行和处理方面稳定,可靠的优越性能,成为当下web服务器的领跑者。但是由于apache使用的select事件的IO机制,因此比较占有资源,但也正式因为这种设计,才使得apache工作起来比较稳定。
以下就讲述apache的配置文件以及其工作机制:
1、Apache其服务名:httpd
2、主配置文件:/etc/httpd/conf/httpd.conf
3、apache又有很多子配置,因此其具有很多配置片段:
其片段配置文件:/etc/httpd/conf.d/*
4、其默认存放网页的目录:/var/www/html

当然,大家都知道Linux是开源自由的操作系统,因此你懂的~,上面的所有属性都是可以修改的!

Apache的工作机制:
在处理动态网页时,apache则使用的是CGI(通用网关接口),CGI其作用是让前端的服务器和后台的应用程序结合起来,来处理web服务器上的网页内的脚本。当web服务器对页面进行处理时,发现网页内有脚本文件,此时就可以通过CGI这个接×××给后台处理该脚本的应用程序,当应用程序处理后将处理后的结果返回给web服务器,而此时的脚本已经被格式化为html语言,记住,web服务器是不能处理动态网页的,因此哪个服务器支持CGI也就是说,这个服务器可以处理动态网页!
Apache有三中工作方式:
CGI:apache响应每一个用户请求,都有启动一个独立进程,而apache自身又要启动一个进程,来等待用户请求,生成一个web进程后,又要生成一个处理程序的进程,当处理完后,每一个进程又要按照之前的配置进行相应个数的进程销毁,而服务器的资源开销也就开销在这个地方了!
模块化:当用户请求的有动态内容时,CGI的工作模式中那个应用程序的进程不在是独立的进程,而是作为Apache的模块存在,在Apache的地址空间中运行。
FASTCGI:之前的apache的工作进程不在是一个独立的进程了,而是作为一个服务存在,当个用户请求的页面存在动态内容时,服务器就向这个服务发起请求,进行处理,而这种方式的好处是这个进程具有了自己的管理机制,而它又是独立工作成一个服务,因此它也可以存放在不同的服务器上,这样就大大的提高了网站的性能。
●而apache的工作受SElinux影响,因此在启动apache之前将SElinux状态暂时停用:
#setenforce 0
查看SElinux的工作状态:
#getenforce
MPM:multipath processing module多路处理模块,多个用户请求,如何去处理,叫做多路处理机制,多道处理模块常用的有以下两种:
prefork:事先为每一个用户的请求生成多个空闲进程来进行响应,优点:稳定,安全性好
worker:每一个请求用一个线程进行响应,特点:线程的创建和销毁方便快捷,资源消耗低,而Linux又不是多线程的操作系统,所以此方式不被使用。
这是apache的独有的工作机制。
apache配置文件结构:
在配置文件中有以下几个特点:
1、以#开始的是注释行
2、关键字对大小写不敏感
3、大多数参数在有多个值时,使用空格分割
apache的主配置文件/etc/httpd/conf/httpd.conf由以下3部分组成
1、Global Environment:全局配置该部分主要对apache的运行环境以及状态进行设置。
2、Main Server Configuration:主机服务配置该部分实际是对运行网站的参数的设置。
3、Virtual Hosts:虚拟主机配置该部分用于定义多个主机的网站,而该定义方法又分为:基于IP地址,基于端口号,基于FQDN三种。
配置文件中常用参数的意义:
文件系统容器使用以下格式进行定义:
<Directory 目录>
    参数
    ……
</Directory>
<DirectoryMatch 目录正则表达式>
    参数
    ……
</Directory>

<Files 文件>

    参数
    ……
</Files>
<FileMatch 文件正则表达式>
    参数
    ……
</FileMatch>
网络空间使用以下格式:
<Location 路径>
    参数
    ……
</Location>

<LocationMatch 路径正则表达式>

    参数
    ……
</LocationMatch>
例如:

 
 
  1. 1、对/www/htdocs目录进行访问控制  
  2.  
  3. <Directory /www/htdocs>  
  4.       Order Allow,Deny  
  5.       Allow From All  
  6.       Deny From 192.168.0.0/24  
  7. </Directory>  
  8.  
  9. 2、对/www/htdocs/test.html进行访问控制 
  10.  
  11. <Files /www/htdocs/test.html> 
  12.       Order Allow,Deny 
  13.       Allow From All 
  14.       Deny From 192.168.0.0/24 
  15. </Files> 
  16.  
  17. 3、对网站中admin目录下的所有html文件进行访问控制  
  18.  
  19. <Location /admin/*.html>  
  20.       Order Allow,Deny  
  21.       Allow From 172.16.4.1/16  
  22.       Deny From All  
  23. </Location> 
  24.  
  25. 4、使用正则表达式对word、excel、mp3文件进行访问控制 
  26.  
  27. <FilesMatch \.(?idoc?x|xls?x|mp3)$> 
  28.       Order Allow,Deny 
  29.       Allow From All 
  30.       Deny From 192.168.0.0/24 
  31. </FilesMatch> 

其他属性

 
  1. DirectoryIndex                                     ## 网站的默认网页 
  2. TypesConfig                                    ## 指定识别某种应用程序去识别的程序文件 
  3. HostnamedLookuos Off                               ## 主机名解析 
  4. ErrorLog logs/error_log                            ## 错误日志的存放 
  5. LogLevel warn                                  ## 指定错误信息日志级别 
  6. Customlog FILEPATH FORMAT                      ## 指定访问日志 
  7. ServerSignature On                             ## 服务器签署 
  8. Alias /icons "/var/www/icos"                       ## 定义不在网站目录内的其他网页的名字,路径别名 
  9. ScriptAlias                                    ## CGI脚本别名 
  10. IndexOptions                                       ## 索引样式 
  11. AddType                                        ## 添加额外的文件类型处理 
  12. <Directory /> 
  13.     Options ExecCGI 
  14.     MuliViews                                  ## 内容显示协商 
  15.      
  16.     AllowOverride AuthConfig               ## 使用认证配置覆盖下面ACL 
  17.     AuthName "private"                     ## 显示给用户的提示字符串 
  18.     AuthType Basic                         ## 指定认证机制 
  19.     AuthUserFile /etc/httpd/conf/.htpasswd     ## 指定存放验证用户的密码存放文件的路径 
  20.     AuthGroupFile /etc/httpd/conf/.htgroup     ## 指定存放验证组的密码存放文件的路径 
  21.     Require group GROUPNAME                    ## 允许登录的组名 
  22.     Require user gentoo                    ## 允许的登录用户 
  23.         valid-user                     ## 允许所有的用户 
  24.     Order allow,deny                       ## 网站的访问权限控制,排在后面的将被设为默认 
  25.     allow from                             ## 定义目录的文件访问,基于客户端来源的ACL 
  26. </Directory> 

以上为apache服务器配置的基本常用参数,其中包含别名,访问控制,以及访问用户身份验证等属性参数。欢迎继续关注以后的apache服务器配置与调优!