Apache全解(五)_常见配置1

By | 2019年 11月 23日

Httpd 常见配置1

官方帮助:http://httpd.apache.org/docs/2.4/

  1. httpd配置文件的组成:
    (1)Global Environment
    (2)Main server configuration
    (3)virtual host
  2. 配置格式:directive value
    directive 不区分字符大小写
    value 为路径时,是否区分大小写,取决于文件系统
  3. 这些配置文件:
    (1)/etc/httpd/conf/httpd.conf
    (2)/etc/httpd/conf.d/*.conf
1、显示服务器版本信息
ServerTokens 选项
选项显示效果
Prod[uctOnly]Server: Apache
MajorServer: Apache/2
MinorServer: Apache/2.0
Min[imal]Server: Apache/2.0.41
OSServer: Apache/2.0.41 (Unix)
Full (or not specified)Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2

curl测试:

#包含http的头部信息
curl -i http://192.168.99.101
#只含http的头部信息
curl -I http://192.168.99.101
2、修改监听的IP和Port

(1) 省略IP表示为本机所有IP
(2) Listen指令至少一个,可重复出现多次
示例:

Listen 192.168.1.100:8080
Listen 80
3、持久连接

Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成,默认关闭持久连接
断开条件:时间限制:以秒为单位, 默认5s,httpd-2.4 支持毫秒级
设置:

KeepAlive On|Off
KeepAliveTimeout 15

测试:

#如果时间过短,命令没敲完就断开了
telnet 192.168.99.101 80
GET /URL HTTP/1.1
Host: 2.2.2.2
4、DSO: Dynamic Shared Object

加载动态模块配置,不需重启即生效
示例:

#模块文件路径可使用相对路径:相对于ServerRoot(默认/etc/httpd)
#配置指定实现模块加载格式:
#LoadModule <mod_name> <mod_path>

LoadModule auth_basic_module modules/mod_auth_basic.so

动态模块路径: /usr/lib64/httpd/modules/
查看静态编译的模块: httpd -l
查看静态编译及动态装载的模块: httpd –M

5、MPM: Multi-Processing Module 多路处理模块

切换使用的MPM

#启用要启用的MPM相关的LoadModule指令即可
#prefork, worker, event都在这这配置文件里

vim /etc/httpd/conf.modules.d/00-mpm.conf
在这里插入图片描述

prefork的配置示例:

StartServers 8
MinSpareServers 5
 #最少空闲进程
MaxSpareServers 20
 #最多空闲进程
ServerLimit 256 
 #最多进程数,最大20000
MaxRequestsPerChild 4000 
 #子进程最多能处理的请求数量。
 #在处理MaxRequestsPerChild 个请求之后,子进程将会被父进程终止
 #这时候子进程占用的内存就会释放(为0时永远不释放)

worker的配置示例:

ServerLimit 16
StartServers 2
MaxRequestWorkers 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25

测试

ab -c 1000 -n 2000 http://192.168.99.101/m.txt
#-c是并发,-n是发起几次
6、定义主页的文档页面路径

文档路径映射:
DocumentRoot指向的路径为URL路径的起始位置
示例:

DocumentRoot "/data/html"
#httpd-2.4以上需要加下面这段
<Directory "/data/html">
    Require all granted
</Directory>
7、定义站点主页面
<IfModule dir_module>
    DirectoryIndex abc.txt index.html
</IfModule>
#先找abc.txt再找index.html
8、站点访问控制常见机制

可基于两种机制指明对哪些资源进行何种访问控制
访问控制机制有两种:客户端来源地址,用户账号
==文件系统路径:==

#针对某个目录
<Directory "/path">
...
</Directory>

#针对某个文件
<File "/path/file"> #可以用通配符
...
</File>

#针对某些文件,正则表达式
<FilesMatch "PATTERN">
...
</FilesMatch>

==URL路径:==

<Location "/status">
...
</Location>

<LocationMatch "/(extra|special)/data">
...
</LocationMatch>
9、"< Directory >"中"基于源地址"实现访问控制

(1) Options:后跟1个或多个以空白字符分隔的选项列表
在选项前的+- 表示增加或删除指定选项

常见选项说明
Indexes指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户
FollowSymLinks允许访问符号链接文件所指向的源文件
None全部禁用
All全部允许

示例:

<Directory "/web/docs"> 
    Options Indexes FollowSymLinks 
</Directory> 

#例2
<Directory "/web/docs/spec"> 
    Options FollowSymLinks 
</Directory>

(2) AllowOverride
与访问控制相关的哪些指令可以放在指定目录下的.htaccess(由AccessFileName指定)文件中,覆盖之前的配置指令
示例:

vim /data/html
<Directory "/data/html">
    AllowOverride All
    #.htaccess 中所有指令都有效
</Directory>

还可以写

AllowOverride None
#.htaccess 文件无效
AllowOverride AuthConfig 
#.htaccess 文件中,除了AuthConfig 其它指令都无法生效

(3) 基于IP的访问控制:
无明确授权的目录:默认拒绝
允许所有主机访问:

Require all granted

拒绝所有主机访问:

Require all denied

控制特定的IP访问:

Require ip IPADDR
#授权指定来源的IP访问
Require not ip IPADDR
#拒绝特定的IP访问

控制特定的主机访问:

Require host HOSTNAME
#授权特定主机访问
Require not host HOSTNAME
#拒绝 HOSTNAME:
FQDN
#特定主机
domin.tld
#指定域名下的所有主机

不能有失败,失败优先

<RequireAll>
    Require all granted
    Require not ip 172.16.1.1 
    #拒绝特定IP
</RequireAll>

多个语句有一个成功,则成功,即成功优先

<RequireAny>
    Require all denied
    require ip 172.16.1.1 
    #允许特定IP
</RequireAny>

发表回复

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