httpd的功能特性及配置文件详解

   httpd:Apache超文本传输协议服务器, 是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。

   httpd的特性

    1)高度模块化:核心+模块的方式

    2)DSO(Dynamic Shared Object): 支持动态装卸载

    3)MPM:Multipath Processiong Module多处理模块

        Apache HTTP 服务器被设计为一个功能强大,并且灵活的 web 服务器, 可以在很多平台与环境中工作。不同平台和不同的环境往往需要不同 的特性,或可能以不同的方式实现相同的特性最有效率。Apache 通过模块化的设计来适应各种环境。这种设计允许网站管理员通过在 编译时或运行时,选择哪些模块将会加载在服务器中,来选择服务器特性。

        使用MPM的优势

             Apache 能更优雅,更高效率的支持不同的平台Apache 

             能更好的为有特殊要求的站点定制。例如,要求 更高伸缩性的站点可以选择使用线程的 MPM,即worker或 event,需要可靠性或者与旧软件兼容的站点可以使用 prefork。

         MPM的三种模型:

            prefork:多进程模型,每个进程响应一个请求;稳定性好,但并发能力有限,预先生成多个空闲进程,select()系统调用,不能超过1024个;

           worker:多进程模型,每个进程可生成多个线程,每个线程响应一个请求;预先生成多个空闲进程;

            event:一个进程直接响应n个请求,可同时启动多个进程(n*m);基于事件驱动工作。

   httpd的功能特性

虚拟主机:基于HOST,IP,PROT实现虚拟主机

支持CGI:Common Gateway Interface,是一种协议,

反向代理:

负载均衡

路径别名

丰富的用户认证

  basic认证

  digest认证

     支持第三方模块

    

    配置文件位置:    

      配置文件:

/etc/httpd/conf/httpd.conf

/etc/httpd/conf.d/*.conf

服务脚本:

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

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

模块文件:

/etc/httpd/muludes:符号链接文件

/usr/lib64/httpd/moudles

主程序:

/usr/sbin/httpd:默认的MPM为prefork,多进程模型

/usr/sbin/httpd.work,多线程模型

/usr/sbin/httpd.event,I/O模型

可通过配置/etc/sysconfig/httpd选择工作方式

      日志文件目录:

      /var/log/httpd

      access_log:访问日志

      error_log: 错误日志

      站点文档目录:

      /var/www/html

/etc/httpd/conf/httpd.conf的详细说明

 (1) /etc/host

      可配置httpd启动的时候不报错

       后加本机IP 本机名 别名

     /etc/httpd/conf.d/welcome.conf

     移除此文件可去掉欢迎界面

      /var/www/html/index.html

    主页地址

(2)指定监听的地址和端口

    Listen [ip:]PROT

    注意:Lsten可以出现多次

(3)持久连接

      keepAlive off|on

      MaxkeepAliveRequests  100 #限制了当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为”0″,将不限制请求的数目

      keepAliveTimeout 15

(4) MPM相关 

    ps aux|grep httpd 查看正在工作的模式

      配置文件中查看:Server-Pool Size Regulation

    切换工作模式:/etc/sysconfig/httpd

(5) DSO动态装卸载
        httpd -l:显示编译进核心的模块
        httpd -M:做进模块中的内容

    注意:依赖关系

         相对路径,相对于SERVERROOT参数所指定的路径ServerRoot:/etc/httpd

     service httpd configtest:

      httpd -t :配置文件的语法检查

     注意:修改了装载的模块后,reload即可生效

(6)指定Main Server的docroot

     配置文件中 Section 2

     DocumentRoot "":修改路径

     例如;/www/htdocs

     文件系统路径;/www/htdocs/bbs/upload/a.rar

     URL路径:http://Server_IP/bbs/upload/a.rar

    注意:section2 和section 3不能同时使用

(7)站点路径访问控制

    基于本地文件系统路径,支持级联

     <Directory "/path/to/some_directory">

     </Directory>

     <Directory "/www">

     </directory>

    基于URL实现

     <Location "/path/to/some_url">

     </Location>

(8)Directory容器中的访问控制定义

 (a)Options

     Indexes: 当访问的路径下无主页面时,将所有资源以列表形式呈现给用户,危险,慎用

     FollowSymLinks:可以显示链接文件 跟随符号链接指向的源文件

     -FollowSymLinks取消选项

     None:一个也没有

     All:所有

 (b)AllowOverride None

 (c)基于IP的访问控制

     order allow ,deny

     allow from all

     from后面能接受的地址格式:

     IP,Network Address

     网络地址格式:

     172.16

     172.16.0.0

     172.16.0.0/16

     172.16.0.0/255.255.0.0

     ordre allow,deny

     Deny form 172.16.100.77  拒绝

     Allow from 172.16 开启访问

     /var/log/httpd/access_log 正确的访问日志

     /var/log/httpd/error_log 错误的访问日志

 (9)定义默认的主页面

  DirectoryIndex index.html index.html.var

 (10)配置日志功能,默认开启

   ErrorLog logs/error_log:定义错误日志文件路径

   LogLevel warn:日志级别

   CustomLog  logs/access_log combined: 访问日志

指令日志文件日志格式名称                           

     LogFormat:   log/access_log格式

     %h Remote host

     %l  remote logname

     %u Romate user

     %t time   用户请求收到时的时间

     %r First line of request :请求报文的首行

       method url version

     %b

     ${Foobar}i 

     %{Referer}i:跳转至当前页面之前来源的上一次所在的页面

     %{User_Agent}i:用户代理

(11)curl命令

curl是基于URL语法在命令行下工作的文件传输工具,它支持ftp,ftps,http,HTTPS,GOPHER,TELNET,DICT,FILE及ldap等协议,curl支持HTTPS认证,并且支持http的post,put等方法,ftp上传,kerberos认证,http上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上传文件断点续传,http代理服务器管道(proxy tunneling),甚至它还支持IPv6,socks5代理服务器,通过http代理服务器上传文件到ftp服务器等等,功能十分强大。

curl的常用选项:

-A/--user-agent <string>设置用户代理发送给服务器

-base 使用HTTP基本认证

--tcp-nodelay 使用TCP_NODELAY等选项

-e/--referer <URL> 来源网址

curl -e "URL" http://

--cacert <file> CA证书(SSL)

--compressed 要求返回是压缩的格式

-H/--header <line> 自定义头信息传递给服务器

-I/--head 只显示响应报文首部信息

--limit-rate <rate> 设置传输速度

-u/--user <user[:password]> 设置服务器的用户和密码

-0/--http1.0 使用HTTP1。0


用法:curl [options] URL...

TCP拥塞控制:Nagel算法,为了防止小报文的占用空间,节约网络带宽,为了提高效果,可以关闭这种算法 --tcp-nodelay不激活算法


(12)路径别名

    定义方法:

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

    Alias /icons/ "/var/www/icons/"

     Alias /bbs/ "/web/forum/" #注意:bbs后可以没有斜杠,则forum后面也没有斜杠    

         特别注意:selinux需要关闭,否则路径别名不能使用selinux 0

 访问方法:

     http://172.16.100.8/bbs/images/1.html

(13)设定默认字符集

    AddDefaultCharset UTF-8

    常用字符集:UTF-8,GBK,GB2312,GB18030

(14)基于用户的访问控制

请求--》质询--》输入账号密码--》访问成功

质询:

www-Autherticate:服务器用401状态拒绝客户端请求,说明需要用户特供用户名密码

认证:

Authorization:客户端填入账号和密码后重新发出请求,包含认证算法,用户名和密码

安全域:secrity realm

docroot:/www/htdocs/

     admin/

      finance/

相关模块:auth_basic_module modules/mod_auth_basic.so

认证方式:

基本认证:basic

      base64编码 存在安全缺陷,较容易还原

摘要认证:digest 

cd /www/hddocs

mkdir admin


 mkdir /etc/httpd/users

 htpasswd命令

 -c创建

 -m:md5格式

 -D:删除

 -p:明文加密

 配置httpd使用basic认证;

 (1)定义security realm

    <Directory "/var/www/html/admin">
    Options None
    AllowOverride None #不允许使用.htaccess中的指令
    AuthType Basic  #基于basic认证
    AuthUserFile /etc/httpd/users/.htpasswd #存放文件的位置
    Require Valid-user #Valid-user允许账号中的所有用户访问,针对某个用户访问命令require user 用户名
    </Directory>

 (2)提供用于认证的文件

      htpasswd [options] password_fiel username

[root@localhost html]# htpasswd -c -m /etc/httpd/users/.htpasswd tom
New password: 
Re-type new password: 
Adding password for user tom
htpasswd  -m /etc/httpd/users/.htpasswd jerry

      -c:添加第一个用户时自动创建账号文件,以后再创建用户不需要加-c;

      -m:以md5格式加密密码

      -s:以sha格式加密

      -p:明文

      -D:删除指定用户

(3) 组认证: <Directory "/www/htdocs/amdin">

 Options None

 AllowOverride None

 AuthType Basic

 AuthName "Admin Area"

 AuthGroupFile /etc/httpd/users/.htgroup

 AuthUserFile /etc/httpd/users/.htpasswd  自己创建

  Require group GRP1,..

 </directory>

  祖文件:

  每行定义一个组,格式

  GROUP: user1 user2  user3


  (15)虚拟主机

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

  IP:port

  httpd支持三种类型的虚拟主机

      基于IP

      基于port

      基于host

  注意:取消中心主机main Server,配置完虚拟主机后需要重启服务,否则不生效

#DocumentRoot "/var/www/html"

定义虚拟主机:

  基于端口:

<VirtualHost 192.168.1.179:80>
ServerName www.ma.com
DocumentRoot "/web/www.ma.com"
</VirtualHost>
<VirtualHost 192.168.1.179:8080>
ServerName www.ma.org
DocumentRoot "/web/www.ma.org"
</VirtualHost>

确保监听状态

Listen 80
Listen 8080


实力3:基于Host  Servername 的不同

NameVirtualHost *:80   //启用起来

</VirtualHost 172.16.100.8:80>

ServerName  www.ma.com

ServerAlias "bieming"  //使用别名

DocumentRoot "/Vhosts/www.ma.com"

</VirtualHost>

</VirtualHost 172.16.100.8:80>

ServerName  www.ma.org

DocumentRoot "/Vhosts/www.ma.org"

</VirtualHost>

修改/etc/hosts

curl http://www.magedu.com

culr http://www.magedu.org


三种模式可以混用,日志文件可以独立分开


(16)内置的status页面

mod_status.so


</location /server-status>

SetHandler server-status

Order deny,allow

Deny form all

Allow from 172.16

</Location>



测试URL/server-status

ExtendedStatus On

更详细的status信息

          


你可能感兴趣的:(配置文件,httpd)