CentOS6服务管理之WEB-Apache httpd配置文件详解


Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器,可以在大多数电脑操作系统中运行,由于其跨平台和安全性。被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。

其程序包是httpd:

[[email protected] ~]# rpm -qa httpd

httpd-2.2.15-39.el6.centos.x86_64

httpd是yum安装或者是rpm包安装的话,主配置文件会默认保存在/etc/httpd/conf/httpd.conf

/etc/httpd/conf.d/*.conf为主配置文件的辅助性配置文件

下面来介绍一下httpd的程序的主配置文件重要的一些部分:

httpd.conf配置文件由三部分组成:

全局环境

主服务器配置

虚拟主机

一.全局环境

### Section 1: Global Environment

1.服务程序根目录:指出服务器保存其配置、出错和日志文件等的根目录。

ServerRoot "/etc/httpd"

2.PID文件存放路径:相对路径

PidFile run/httpd.pid

3、开启或关闭持续连接:

KeepAlive {On|Off}

4.持续连接最大连接数

MaxKeepAliveRequests 50   #最大连接数50

5.持续连接超时时间

KeepAliveTimeout 15       #超时时间为15s,单位默认为s

6.针对MPM的设置,为多道处理模块

## Server-Pool Size Regulation (MPM specific)

prefork:一个进程响应一个请求,稳定可靠,任何进程崩溃了,不会影响另外一个进程,尤其并发量很大时对资源消耗比较大,尤其涉及到大量的进程切换;
worker:一个进程生成多个线程,一个线程响应一个请求
event:一个进程同时响应多个请求,但不会生成线程

注:对于worker模式:启动多个进程,每个进程生成多个线程,对于thread由于多个线程共享同一个进程资源,所以某个线程打开某一个文件并进行了访问的话,那么第二个线程就不用再打开了,直接访问就可以了;这样效率会高一些;但是多个线程在工作时写一个资源的话会导致资源争用,所以为了避免资源竞争,必须要加锁,因此不能良好的解决锁竞争的话,事实上线程是不是比进程的效率更高,这个很难说,尤其是Linux并不是原生态支持线程的,这也是为什么默认使用prefork而不使用worker的原因。

http -l  #查看编译进内核的模块

如果向使用不同的MPM,直接修改文件/etc/sysconfig/httpd文件中的HTTPD项即可

#HTTPD=/usr/sbin/httpd.worker

preforck模块:

<IfModule preforck.c>     判断模块是否存在

StartServers           默认启动的工作进程数

MinSpareServers        最少空闲进程数

MaxSpareServers        最大空闲进程数

ServerLimit            最大活动进程数

MaxClients             最大并发连接数,最多允许发起的连接请求个数

MaxRequestsPerChild    每个子进程在生命周期内最大允许服务的请求个数

</IfModule>

实例:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

worker模块:

<IfModule worker.c>

StartServers           默认启动的工作进程数

MaxClients             最大并发连接数

MinSpareThreads        最少空闲线程数

MaxSpareThreads        最多空闲线程数

ThreadsPerChild        每个自己进程生成的线程数

MaxRequestsPerChild    每个子进程在生命周期内最大允许服务的请求个数

</IfModule>

实例:

<IfModule worker.c>
StartServers         4
MaxClients         300
MinSpareThreads     25
MaxSpareThreads     75 
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

7、监听套接字

Listen [IP:]port

此指令可以出现多次,用于指定监听多个不同的套接字,IP地址可以省略,如果IP地址省略则表示监听在本机所有的ip地址上

Listen  172.16.31.5:80

Listen 8080

8.DOS模块的加载方式,动态模块

# Dynamic Shared Object (DSO) Support

LoadModule module_name /path/to/module

可以使用绝对路径,也可以使用相对路径,如果使用相对路径,则是相对于ServerRoot所定义的位置而言的

httpd -m    #列出所有已加载的DOS模块与非DOS模块

实例:

LoadModule auth_basic_module modules/mod_auth_basic.so

二.主服务器配置

### Section 2: ‘Main‘ server configuration

1.主服务器管理员邮箱

ServerAdmin [email protected]

2.主服务器名称

#ServerName www.example.com:80

3.配置站点根目录

DocumentRoot /path/to/somewhere

只能使用绝对路径

#DocumentRoot "/var/www/html"

4.页面访问属性

<Direcotry "/path/to/somewhere">

Options 选项

Indexes:缺少指定的默认主页时,允许将目录中的所有文件以列表形式返回给用户,危险:慎用

FollowsymLinks:允许跟随符号链接所指向的岁暗示文件

None:所有的都不启用

All: 所有的都启用

ExecCGI: 允许使用mod_cgi模块执行CGI脚本

Includes: 允许mod_include模块实现服务器端包含

IncludesNOEXEC:允许包含但不允许执行CGI脚本

MultiViews:允许使用mod_negotication实现内容协商

SymLinksIfOwnerMatch:在链接文件属主属组与原始文件的属主属组相同时,允许跟随符号连接所指向的原始文件

</Direcotry>

默认:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

5.针对主服务器根目录的配置

# This should be changed to whatever you set DocumentRoot to.

基于主机的访问控制(2.2系列的配置)

<Direcotry "/path/to/somewhere">

Options

AllowOverride

None 不禁用下面选项

Order 次序,写在后面的为默认

allow,deny: 没有允许的都拒绝

deny,allow:没有拒绝的都允许

Allow from   允许通过的主机

Deny from    拒绝通过的主机

可以是单独的ip地址,也可以是一个网段

172.16.0

172.16.0.0

172.16.0.0/24

172.16.0.0/255.255.255.0

表示的都为172.16.0网段

</Direcotry>

如果都匹配或都不匹配时则以默认的为准,否则以匹配到的为准

6.定义默认主页面

DirectoryIndex

查询顺序为依次查询

DirectoryIndex index.html index.html.var

7.错误日志位置

ErrorLog logs/error_log

8.错误日志记录级别

LogLevel warn

9.配置日志功能

CustomLog logs/access_log combined

access.log 访问日志,其需要记录的内容需要自定义

error.log 错误日志,

访问日志:

CustomLog "/path/to/log_file" LogFormat

LofFormat定义的日志格式,只解释最常用的一种

"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""

%h: 客户端地址

%l:远程的登陆名,通常为-

%u: 认证时的远程用户名,通常为-

%t: 接收到的请求时的时间,为标准英文格式时间+时区

\":表示转义,显示"

%r:请求报文的起始行

%>s: 响应状态码

%b:以字节响应报文的长度,不包含头报文

%{Referer}i:记录指定请求报文首部的内容

%{User-Agent}i:用户使用的工具

详情请参考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

10.路径别名

Alias /alias/ "/path/to/somewhere"

意味着访问http://Server_IP/alias时,其页面文件来自于/path/to/somewhere中

实例;

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

11.指定默认的字符集

AddDefaultCharset

实例:

AddDefaultCharset UTF-8

12.脚本路径别名(CGI接口)

CGI:Common Gateway Interface(通用网关接口)使web可以跟一个应用程序进行通信,从通信环境中获得结果,前提必须加载mod_alias和mod_cgi模块

一般在第一行写入 echo “Content-Type:text/html”

ScriptAlias /URL/ "/path/to/somewhere" somewhere下的文件可以被执行

格式一般为

cat << EOF

Content-Type:text/html

<pre>

The Time is : `date`

</pre>

EOF

13.基于用户的访问控制

虚拟用户:不是系统上的用户,只是为了获取某种特定的资源烈性的一种虚拟用户

可以基于文件、SQL数据库、DBM、ldap认证

认证类型(auth)

basic:基本认证,账号和密码以明文发送

digest:摘要认证,hash编号以后再发送

认证提供者(authentiation provide):账号和密码的存放位置

授权机制(authorization):根据什么进行授权

案例:基于文件,做基本认证根据用户和组进行授权

1、编辑配置文件,为需要认证的目录配置认证机制

<Directory "/server-status">

options None

AllowOverride AuthConfig 使用认证配置

AuthType Basic 使用基本认证

AuthName "Private Area" 质询时标题

AuthUserFile /etc/http/conf/.htpasswd  密码的存放位置

Require  user tom  jerry |Require  valid-user  可访问的用户

</Directory>

注:

Require  valid-user   #运行帐号文件中的所有用户访问

Require  user  tom   
#仅允许指定用户登录

   

   2、使用htpsswdm命令使用生成认证库

htpasswd

-c 创建密码,创建第一个用户时使用

htpasswd -c -m /etc/http/conf/.htpasswd tom

-m MD5格式存放

-b 批量模式

-D 删除用户

3、基于组认证

<Directory "/server-status">

options None

AllowOverride AuthConfig 使用认证配置

AuthType Basic 使用基本认证

AuthName "Private Area" 质询时标题

AuthgroupFile /etc/http/conf/.htpasswd  密码的存放位置

Require group GroupName  可访问的用户

</Directory>

先创建用户,在创建组

组文件:

组文件:每一行定义一个组

格式:

GROUP:user1 
user2  user3

三.虚拟主机

### Section 3: Virtual Hosts

如果开启虚拟主机就需要开启:

NameVirtualHost *:80

一个物理服务器提供多个站点;使用虚拟要先取消中心主机

注意:先注释或取消Main Server;注释DocumentRoot指令即可

基于不同的IP实现不同的虚拟主机:变化IP

基于不同的port实现不同的虚拟主机:变化port

基于不同的主机名实现不同的虚拟主机:变化ServerName的值

通过请求报文中的HOST来实现不同的虚拟主机的访问

<VirtualHost IP:port>

SeverName               #主机名

DocumentRoot ""         #服务器目录

<Directory "">

</Directory>

ServerAlias             #配置别名

ServerAdmin             #管理邮箱

</VirtualHost>

虚拟主机可以单独配置用户认证、访问日志、错误日志、别名、脚本别名等

基于主机名的实例:

<VirtualHost IP:80>

DocumentRoot  /var/www1

ServerName  www.test.com

ServerAlias web.test.com

ServerAlias test.com

ErrorLog logs

CustomLog       "/var/log/httpd/access_test.log"   combind

</VirtualHost>

<VirtualHost IP:80>

DocumentRoot    /var/www2

ServerName  www.oracle.com

ErrorLog logs

CustomLog     "/var/log/httpd/access_oracle.log"   combind

</VirtualHost>

时间: 2024-08-28 19:01:20

CentOS6服务管理之WEB-Apache httpd配置文件详解的相关文章

httpd配置文件详解(v2.2)

# # This is the main Apache server configuration file.  It contains the # configuration directives that give the server its instructions. # See <URL:http://httpd.apache.org/docs/2.2/> for detailed information. # In particular, see # <URL:http://h

httpd配置文件详解(上)

一.使用rpm -ql httpd可以查看rpm包安装的httpd文件及其路径    1.配置文件:        /etc/httpd/conf/httpd.conf    #主配置文件        /etc/httpd/conf.d/welcome.conf    #无首页所指定的链接文件    2.服务脚本:        /etc/rc.d/init.d/httpd    #服务起停脚本        /etc/sysconfig/httpd    #脚本配置文件    3.模块目录:

httpd配置文件详解(下)

httpd配置文件说明 3.虚拟主机配置项 (1)虚拟主机使用前提: 注释主服务器DocumentRoot段 (2)虚拟主机三种形式 基于端口的虚拟主机,例: # 设置监听端口 Listen 80 Listen 8080 <VirtualHost 192.168.100.1:80>     ServerName new.parparxy.com     DocumentRoot "/var/www/news"     ErrorLog logs/news_error_log

CentOS6服务管理之WEB-httpd用户认证控制和https在httpd上的实现

通过上面两篇博客 CentOS6服务管理之WEB-http协议详解 CentOS6服务管理之WEB-Apache httpd配置文件详解 我们学习了Apache httpd的基础知识,下面我们就可以通过设置用户认证和实现https加密传输的实验来配置httpd了,下面是本次实验的要求: 实验环境: CentOS release6.6(Final)   1台 Windows XP             1台 IP地址: 172.16.31.31      www.stu31.com       

Apache服务的主要目录和配置文件详解

2014-01-14 19:05:14 标签:httpd配置文件详解 apache配置文件 httpd配置文件 apache文件目录 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://731434.blog.51cto.com/721434/1351637 Apache服务的主要目录和配置文件详解 一.Apache 主要配置文件注释 /application/apache/conf/httpd.conf     # apache

CentOS6服务管理之DNS-主从DNS服务器的搭建

接上一篇:CentOS6服务管理之DNS-本地DNS服务器的搭建 下面我们来搭建主从DNS服务器 实验环境: CentOS release 6.6(Final)  两台 IP地址: 172.16.31.3      DNS1        主DNS服务器端 172.16.31.4      DNS2        从DNS服务器端 我们要架设一个DNS服务器一般需要下面三个软件程序包: bind-libs.x86_64      #提供库文件 bind-utils.x86_64     #提供工

httpd默认配置文件详解

由于Apache的默认配置文件/etc/httpd/conf/httpd.conf这文件里面的注释信息实在太多,对于英文不好的同学来说要读完整个文件可真是个头疼的事情.所以我把httpd2.2.15里面默认的配置文件去掉英文注释,把我所了解的做个注解希望能对有缘看到的新手朋友有所帮助,如有错误之处欢迎指正.. 首先我把httpd.conf文件以#号开头的行去掉,输入到httpd1.conf这个文件里去!这样就得到了一个没有英文注释的配置文件. 下面就是配置文件中的内容: ServerTokens

Apache配置文件详解

Apache配置文件详解   *此为用yum安装的apache文件的各项解释和编译安装后的apache配置文件大同小异,仅做参考 httpd 的配置文件是: /etc/httpd/conf/httpd.conf [ //查看配置文件 # grep -v "#" /etc/httpd/conf/httpd.conf //当服务器响应主机头(header)信息时显示Apache 的版本和操作系统名称 ServerTokens OS //设置服务器的根目录 ServerRoot "

apache 配置文件详解

apache  配置文件详解 1.由于配置文件中的空行和注释很多所以要排除 主配置文件:httpd.conf:( 注意备份) grep -Ev  "#|^$"  httpd.conf :     ServerRoot "/application/apache2.2.27" #服务的根目录:软件安装位置: Listen 80 #web服务监听端口,用户访问使用: <IfModule !mpm_netware_module> <IfModule !mp