httpd配置文件

MPM:多处理模块 worker,event(事件驱动模型,单线程响应多请求),prefork

 http://httpd.apache.org/docs/2.4/mpm.html

DSO机制:动态共享对象,可使用LoadModule动态装载模块,无需重启服务

以CentOS 6.5为例http的配置文件,一般默认路径在/etc/httpd/conf/httpd.conf

主要有三段配置

Section 1: Global Environment

全局配置及虚拟主机共享参数

Section 2: ‘Main’ server configuration

主服务器配置

Section 3: Virtual Hosts

虚拟主机配置

注:主服务器和虚拟主机一般不同时使用,默认启动主服务器。

(参数的值需要区分大小写)

参数:

Section 1: Global Environment
ServerTokens OS 显示浏览器系统信息等,一般不启用
ServerRoot “/etc/httpd” 绝对路径定义
PidFile run/httpd.pid 相对路径定义
KeepAlive On 是否支持持久链接
MaxKeepAliveRequests 100 持久链接最大请求个数
KeepAliveTimeout 15      (秒) 持久链接持续时间
Timeout 60      TCP链接超时时长
<IfModule prefork.c> 多进程模型
StartServers 8 启动空闲进程个数
MinSpareServers 5 最少空闲进程数
MaxSpareServers 20 最大空闲进程数
ServerLimit 256 限制最大用户并发请求数
MaxClients 256 最大用户并发请求数
MaxRequestsPerChild 4000 每个子进程在生命周期内允许处理最大请求个数
作用:不让白白浪费资源用作进程请求
<IfModule worker.c> 多线程模型
StartServers 4 启动进程个数
MaxClients 300 最大用户并发请求数
MinSpareThreads 25 最小空闲线程数
MaxSpareThreads 75 最大空闲线程数
ThreadsPerchild 25 每个子进程启动多少线程
MaxRequestsPerChild 0 (不做限制) 每个线程最大处理请求个数
Listen 80 (可指定多个,需重启服务) 默认监听端口
LoadModule module_alias 路径/*.so

指定装载模块
查看已装载模块

[root@SYJ ~]# httpd -D DUMP_MODULES
Include conf.d/*.conf 指定包含路径
User apache 指定运行用户
Group apache 指定运行组
Section 2: ‘Main’ server configuration
ServerAdmin root@local.com 管理员邮箱地址
ServerName local 设定主机名(默认禁用,自动反解IP得到主机名)
DocumentRoot “/var/www/html” 指定站点根目录
DirectoryIndex 定义默认主页
Errorlog logs/error_log 指定错误日志
LogLevel warn (警告信息输出)
(debug,info,notice,warn,error,crit,alert,emerg)
日志级别
customLog logs/access_log LogFormat_name(要加上自定义格式名称) 指定访问日志
LogFormat 变量 LogFormat_name
变量

  • %h: 客户端地址

  • %l: 远程登录名,通常为-

  • %u: 认证时输入用户名,没有认证时为-

  • %t: 服务器收到 用户请求时的时间

  • %r:请求报文的方法等

  • %>s: 响应状态码

  • %b: 响应报文长度(字节)

  • %{HEADER_NAME}i: 记录http协议首部并用i表示值

注:保留引号需转义

以变量来定义日志格式,并设定名称

Alias 站点目录 映射目录

注:映射后原站点目录下文件将无法访问

路径别名:映射站点目录
Charset=UTF-8

字符集


查看httpd已编译MPM模块

[root@SYJ ~]# httpd -l Compiled in modules:   core.c        //核心模块   prefork.c    //多进程模块   http_core.c    //用到软件或协议时

站点路径访问控制

本地文件系统路径

<Directory “”>    可加~进行模式匹配

Options 

  • Indexes     没主页显示下载列表索引(建议去掉)或者在前面用”-” 号关闭

  • FollowSymLinks    跟踪符号链接页面 (建议去掉)

AllowOverride    定义.htaccess隐藏文件,用来定义资源目录的访问控制

  • None    不启用

IP访问控制

Order allow,deny    先允许后拒绝

Allow from 192.168.0.0/16 先允许此网段IP访问而后拒绝所有IP

</Directory>

URL访问控制

<Location “”>(可用正则,但性能下降)

</Location>

用户访问控制

文件访问控制-用户认证

  • <Directory “需控制的文件路径”>

  • Options none    选项

  • AllowOverride AuthConfig    允许覆盖

  • AuthType Basic     认证类型

  • AuthName “admin”    认证名称

  • AuthBasicProvider file    认证提供路径

  • AuthUserfile /etc/httpd/conf/.htpasswd    用户账号密码信息

  • Require valid-user(所有用户)    认证用户

  • </Directory>

  • 组认证

  • <Directory “需控制的文件路径”>

  • Options none    

  • AllowOverride AuthConfig   

  • AuthType Basic    

  • AuthName “admin”    

  • AuthBasicProvider file    

  • AuthUserFile /etc/httpd/conf/.htpasswd  

  • AuthGroupFile  /etc/httpd/conf/.htgroup

  • Require group GROUP_NAME   认证组名

  • </Directory>

  • htpasswd    提供认证文件

  • -c 第一次创建新文件

  • -m MD5编码用户密码

  • -D 删除指定用户

  • htpasswd -m /etc/httpd/conf/.htpasswd user01

  • vim /etc/httpd/conf/.htgroup

  • 添加group: user01 user02


虚拟主机:一台Server提供多个站点,但需要取消主服务器的根路径,然后设置虚拟Server路径

#DocumentRoot "/var/www/html"

基于IP和端口    

<VirtualHost 192.168.1.1:80>

ServerName www.61cto.com

DocumentRoot “/test/a”

ServerAlias 61cto

ErrorLog “路径”

CustomLog “路径”

</VirtualHost>

<VirtualHost 192.168.1.2:80>

ServerName www.61cto.com

DocumentRoot “/test/a”

ServerAlias 61cto

ErrorLog “路径”

CustomLog “路径”

</VirtualHost>

<VirtualHost 192.168.1.1:80>

ServerName www.61cto.com

DocumentRoot “/test/b”

ServerAlias 61cto

ErrorLog “路径”

CustomLog “路径”

</VirtualHost>

基于主机名

<VirtualHost *:80>

ServerName www.71cto.com

DocumentRoot “/test/c”

ServerAlias 61cto

ErrorLog “路径”

CustomLog “路径”

</VirtualHost>

配置文件语法检查:

httpd -t

service httpd configtest

本文出自 “Linux_MaYi” 博客,转载请与作者联系!


发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注