httpd (apache) 配置文件(httpd.conf)英文对中文的详解

    最近几天看了一些关于httpd的书籍,顺便把学习到的知识记录下来,算不上很精通,

只是些皮毛,可以帮助一些英文不好的 刚接触Linux 下httpd的同学,有错的请评论纠正。



httpd特性和功能:

事先创建进程

按需求维持适当的进程

模块化设计,核心比较小,各种功能都模块添加

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

支持多种方式的虚拟主机配置:(基于ip的虚拟主机,基于端口的虚拟主机,基于域名的虚拟主机)

支持https协议(mod_ssl)

支持用户认证

支持基于IP或主机名的ACL

支持每个目录的访问控制

支持URL重写

httpd 是基于selinux(所以在安装必须把selinux关闭掉)


##查看apache配置文件的段落: grep "Section" httpd.conf

指令不分区字符大小写

value 则根据需要区分大小写

httpd 测试语法是否正确:httpd -t

apache 本地查看说明书安装httpd-manual包,游览器输入:IP/manual 即可查看说明书

查看httpd 支持的多道处理模块:  httpd -l / rpm -ql httpd | grep bin

修改默认启动的多道处理模块:vim /etc/sysconfig/httpd -->#HTTPD=/usr/sbin/httpd.worker


apache(httpd.conf 配置文件解释)


1.(全局配置)

ServerRoot "/etc/httpd" ---#apache工作目录

PidFile run/httpd.pid   ---#运行服务的PID进程

Timeout 60 ---#TCP三次握手连接超时时间

KeepAlive Off ---#是否使用长连接

MaxKeepAliveRequests 100---#打开长连接规定允许打开多少请求(设置0 代表无限制)

KeepAliveTimeout 15 ---#长连接超时断开时长


MPM:多道处理模块

mpm_winnt(windows)

prefork(一个请求用一个进程响应)

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

event(一个进程处理多个请求)

<IfModule prefork.c>(prefork.c模块)---(以后参数可以根据自己测试确定)

StartServers       8   ----每次启动后启动8个进程

MinSpareServers    5   ----随时保证有5个空闲进程(当不足5个的时候,系统启动1个进程)

MaxSpareServers   20   ----最大空闲进程20个

ServerLimit      256   ----对最大客户端通同时请求数的限制

MaxClients       256   ----最大客户端同时请求(调整参数的时候必须调整ServerLimit)

MaxRequestsPerChild  4000 ----一个进程最大响应的次数

</IfModule>



<IfModule worker.c>(worker.c 模块) ---(以后参数可以根据自己测试确定)

StartServers         4     ----每次启动后启动4个进程

MaxClients         300    ----最大客户端同时请求

MinSpareThreads     25     ----最小空闲线程

MaxSpareThreads     75     ----最大空间线程

ThreadsPerChild     25     ----每个进程最多可以生成25个线程

MaxRequestsPerChild  0     ----每个进程响应多少请求(因为worker.c是线程来处理请求,所以进程是0)

</IfModule>


Listen 80(监听端口也可以IP加端口:127.0.0.1:8080)


2.主服务配置

DocumentRoot "/var/www/html"   ---网页根目录(URL路径和本地文件系统路径不是一码事)


options 

       None:不支持任何选项

   Indexes:允许索引目录

       FollowSymLinks:允许访问符号链接的源文件

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

       ExecCGI:允许运行CGI脚本

   ALL:支持所有选项

   

   

order:用于定义基于主机的访问功能,IP,网络地址或主机定义访问控制机制

Order allow,deny(特别注意allow 和deny 的顺序)

Allow from all

deny from 

例子:Order allow,deny allow from 192.168.0.0/24(只允许这个网段访问)


(访问项目基于用户认证控制)    

AllowOverride AuthConfig   ----认证访问

AuthType Basic ---认证方式

AuthName "局部区域认证访问" ---注释

AuthUserFile "/etc/httpd/conf/htpasswd" ---认证用户的账户和密码文件

             (创建htpasswd 文件用htpasswd -c -m /etc/httpd/conf/htpasswd 用户

      (-c 创建文件,如果文件有的话就不用加-c) -m 表示用户密码已MD5加密)

Require valid-user    ---认证文件的用户都可以访问

Require user glory       ---只要认证的glory 用户访问

   

   

(访问项目基于组认证控制)    

    AllowOverride AuthConfig  ---认证访问

    AuthType Basic --认证方式

    AuthName "404" --认证注释

    AuthUserFile "/etc/httpd/conf/htpasswd"  ---认证账户和密码

    AuthGroupFile "/etc/httpd/conf/htgroup" ---认证组(组里面的账户必须在htpasswd 中存在)

  Require group myusers     ---认证组的名称

   

   


用户在家目录下创建自己的网页(默认是关闭的):    

UserDir disabled(如果开启的话把这个加上#号)

UserDir public_html(把这个#去掉即可) ---> 然后系统中添加用户(useradd glory)        --> 普通用户登录创建自己的网页目录(mkdir public_html/index.html)

-->root 用户给public_html 执行的权限(chmod o+x /home/glory)

   

   

DirectoryIndex index.html index.html.var(目录索引)    

   

<Files ~ "^\.ht">  (表示项目中.ht 的文件不允许访问防止盗走)

   Order allow,deny

    Deny from all

    Satisfy All

</Files>



HostnameLookups Off(记录用户访问的IP,如果On的话,会去反解用户的主机名)


ErrorLog logs/error_log(定义错误日志)


(定义日志格式)

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" c     ombined (显示以此远端主机--远端登录名--远程用户名--时间--请求的第一行--状态--传送字节数--游览器)


LogFormat "%h %l %u %t \"%r\" %>s %b" common

(显示以此远端主机--远端登录名--远程用户名--时间--请求的第一行--状态--传送字节数)


LogFormat "%{User-agent}i" agent:(游览器)




Alias /luntan "/bbs/html"  (路径别名设置) --(别名斜杠要带都带要么不带)



虚拟主机(服务于多个不同的站点): 基于IP,基于端口,基于域名

基于IP,HOST的写法:IP1:80/IP2:80

基于端口HOST的写法:IP:80/IP:8080

基于域名HOST写法:*.80(ServerName 不同)


虚拟主机的定义:(使用虚拟主机必须把中心主机关闭,虚拟主机和中心主机不可一起使用,关闭中心主机方法:DocumentRoot注释即可)

基于IP的虚拟主机:

<VirtualHost 192.168.77.112:80>

        ServerName Hello.glory.com

        DocumentRoot "/web/glory.com"

CustomLog /var/log/httpd/hello.glory.com/access_log combined

        ErrorLog /var/log/httpd/hello.glory.com/error_log

</VirtualHost>


<VirtualHost 192.168.77.113:80>

        ServerName www.glory.org

        DocumentRoot "/web/glory.org"

CustomLog /var/log/httpd/www.glory.com/access_log combined

        ErrorLog /var/log/httpd/www.glory.com/error_log

<Directory "/web/glory.org">        -----###(定义用户认证在虚拟主机中)

                Options none

                AllowOverride Authconfig

                AuthType basic

                AuthName "Restrict arae"

                AuthUserFile "/etc/httpd/.htpasswd"

                Require valid-user

        </Directory>                     ------#####

</VirtualHost>



基于端口的虚拟主机(端口8080一定要在配置文件中监听(Listen 8080),因为默认的监听的是80端口):

<VirtualHost 192.168.77.112:8080>

        ServerName www.b.net

        DocumentRoot "/web/b.net"

CustomLog /var/log/httpd/www.b.net/access_log combined

        ErrorLog /var/log/httpd/www.b.net/error_log

</VirtualHost>



基于域名的虚拟主机

NameVirtualHost 192.168.77.113:80(开启基于域名虚拟主机)

<VirtualHost 192.168.77.113:80>

        ServerName www.c.gov(访问的域名)

        DocumentRoot "/web/c.gov" (程序目录)

        CustomLog /var/log/httpd/www.c.gov/access_log combined

        ErrorLog /var/log/httpd/www.c.gov/error_log

<Directory "/web/c.gov"> ----###(虚拟主机中定义不让访问的IP)

                Options none

                AllowOverride none

                Order deny,allow

                Deny from 192.168.77.100  ——————####!

        </Directory>

</VirtualHost>



定义默认的虚拟主机(当用户输入没有的项目或者是虚拟主机解析到默认虚拟主机上去):

<VirtualHost _default_:80> (必须放在所有的虚拟主机最上面)

                DocumentRoot "/web/default"

</VirtualHost>



httpd 查看server-status信息(可以查看目前处理的请求):

<Location /server-status>  (默认这些都是#的,需要手动开启)

    SetHandler server-status

    Order allow,deny

    Allow from all/Allow from 192.168.77.100

</Location> 


本文出自 “以经验为参谋” 博客,转载请与作者联系!

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。