HTTPD的常用配置
- HTTPD 的主配置文件
- HTTPD 常用配置
-
- 1、修改监听的IP和PORT
- 2、持久连接
- 3、MPM
- 4、DSO: Dynamic Shared Object
- 5、定义'Main' server的文档页面路径
- 6、站点访问控制常见机制
- 7、定义站点主页面
- 8、定义路径别名
- 9、设定默认字符集
- 10、日志设定
- 11、基于用户的访问控制
- 12、虚拟主机
- 13、status页面
- 14、ServerSignature On | Off | EMail
- 15、实现用户家目录的http共享
- 16、远程客户端和用户验证的控制
- 17、curl 命令
- 18、elinks 命令
- 19、user/group
- 20、使用 mod_deflate 模块压缩页面优化传输速度
- 21、https(http over ssl)
- 22、httpd自带的工具程序
- 23、httpd的压力测试工具
HTTPD 的主配置文件
HTTPD 的配置文件
服务目录 # /etc/httpd
主配置文件 # /etc/httpd/conf/httpd.conf
网站数据目录 # /var/www/html
访问日志 # /var/log/httpd/access_log
错误日志 # /var/log/httpd/error_log
HTTPD 主配置文件etc/httpd/conf/httpd.conf
在httpd服务程序的主配置文件中,存在三种类型的信息:注释行信息、全局配置、区域配置。
/etc/httpd/conf/httpd.conf:
# Section 1: Global Environment
# Section 2: 'Main' server configuration
# Section 3: Virtual Hosts
配置格式:
directive value
directive # 不区分字符大小写;
value # 为路径时,是否区分字符大小写,取决于文件系统;

HTTPD 主配置文件的常用参数
全局配置参数就是一种全局性的配置参数,可作用于对所有的子站点,既保证了子站点的正常访问,也有效减少了频繁写入重复参数的工作量。区域配置参数则是单独针对于每个独立的子站点进行设置的。
| 最常用参数 | 用途描述 |
|---|---|
| ServerRoot | 服务目录 |
| ServerAdmin | 管理员邮箱 |
| User | 运行服务的用户 |
| Group | 运行服务的用户组 |
| ServerName | 网站服务器的域名 |
| DocumentRoot | 网站数据目录 |
| Listen | 监听的IP地址与端口号 |
| DirectoryIndex | 默认的索引页页面 |
| ErrorLog | 错误日志文件 |
| CustomLog | 访问日志文件 |
| Timeout | 网页超时时间,默认为300秒 |
DocumentRoot参数用于定义网站数据的保存路径,其参数的默认值是把网站数据存放到/var/www/html目录中;而当前网站普遍的首页面名称是index.html,因此可以向/var/www/html目录中写入一个文件,替换掉httpd服务程序的默认首页面,该操作会立即生效。
HTTPD 常用配置
1、修改监听的IP和PORT
语法格式
Listen [IP:]PORT # IP 可省略
注意事项
(1) 省略IP表示为0.0.0.0
(2) Listen指令可重复出现多次
Listen 80
Listen 8080
(3) 修改监听socket,重启服务进程方可生效
2、持久连接
Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成,默认关闭持久连接。
-
断开条件:
数量限制:访问数量达到一定数量后,会断开连接 时间限制:以秒为单位, 默认5s,httpd-2.4 支持毫秒级 -
副作用:对并发访问量较大的服务器,长连接机制会使得后续某些请求无法得到正常响应
-
折衷:使用较短的持久连接时长,以及较少的请求数量
语法格式
KeepAlive On|Off
KeepAliveTimeout 15
MaxKeepAliveRequests 100
注意:
httpd-2.4的KeepAliveTimeout可是毫秒级
KeepAliveTimeout num[ms]
示例
telnet WEB_SERVER_IP PORT
GET /URL HTTP/1.1
Host: WEB_SERVER_IP
[root@Tang ~]# telnet 192.168.1.10 80
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
GET /index.html HTTP/1.1
Host:192.168.1.10
HTTP/1.1 200 OK
Date: Sun, 04 Aug 2019 01:26:20 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Sat, 03 Aug 2019 16:05:26 GMT
ETag: "b-58f38a4a04249"
Accept-Ranges: bytes
Content-Length: 11
Content-Type: text/html; charset=UTF-8
Tang & Neo
Connection closed by foreign host.
3、MPM
httpd-2.2不支持同时编译多个MPM模块,所以只能编译选定要使用的那个;CentOS 6的rpm包为此专门提供了三个应用程序文件,httpd(prefork), httpd.worker, httpd.event,分别用于实现对不同的MPM机制的支持;确认现在使用的是哪下程序文件的方法:ps aux | grep httpd 。
默认使用的为/usr/sbin/httpd,其为prefork的MPM模块。查看httpd程序的模块列表:
```
查看静态编译的模块:
# httpd -l
查看静态编译及动态编译的模块:
# httpd -M
```
CentOS 6 更换 MPM(HTTP/2.2)
更换使用httpd程序,以支持其它MPM机制。
/etc/sysconfig/httpd:
HTTPD=/usr/sbin/httpd.{worker,event}
[root@LeeMumu ~]# ps -aux | grep httpd
root 2935 0.1 0.3 186180 3992 ? Ss 09:39 0:00 /usr/sbin/httpd
apache 2938 0.0 0.2 186180 2548 ? S 09:39 0:00 /usr/sbin/httpd
apache 2939 0.0 0.2 186180 2524 ? S 09:39 0:00 /usr/sbin/httpd
apache 2940 0.0 0.2 186180 2524 ? S 09:39 0:00 /usr/sbin/httpd
apache 2941 0.0 0.2 186180 2524 ? S 09:39 0:00 /usr/sbin/httpd
apache 2942 0.0 0.2 186180 2524 ? S 09:39 0:00 /usr/sbin/httpd
apache 2943 0.0 0.2 186180 2524 ? S 09:39 0:00 /usr/sbin/httpd
apache 2944 0.0 0.2 186180 2524 ? S 09:39 0:00 /usr/sbin/httpd
apache 2945 0.0 0.2 186180 2524 ? S 09:39 0:00 /usr/sbin/httpd
root 2951 0.0 0.0 103320 900 pts/1 S+ 09:39 0:00 grep httpd
[root@LeeMumu ~]# vi /usr/sbin/httpd
HTTPD=/usr/sbin/httpd.worker
[root@LeeMumu ~]# service httpd restart
[root@LeeMumu ~]# ps -aux | grep httpd
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 2989 0.0 0.4 186388 4136 ? Ss 09:40 0:00 /usr/sbin/httpd.worker
apache 2993 0.0 0.5 530648 5452 ? Sl 09:40 0:00 /usr/sbin/httpd.worker
apache 2994 0.0 0.5 530648 5424 ? Sl 09:40 0:00 /usr/sbin/httpd.worker
apache 2995 0.0 0.5 530648 5428 ? Sl 09:40 0:00 /usr/sbin/httpd.worker
root 3105 0.0 0.0 103320 896 pts/1 S+ 09:40 0:00 grep httpd
[root@LeeMumu ~]# vim /etc/sysconfig/httpd
#HTTPD=/usr/sbin/httpd.worker
[root@LeeMumu ~]# service httpd restart
[root@LeeMumu ~]# ps -aux | grep httpd
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 3140 0.0 0.3 186180 3948 ? Ss 09:42 0:00 /usr/sbin/httpd
apache 3143 0.0 0.2 186180 2528 ? S 09:42 0:00 /usr/sbin/httpd
apache 3144 0.0 0.2 186180 2552 ? S 09:42 0:00 /usr/sbin/httpd
apache 3145 0.0 0.2 186180 2528 ? S 09:42 0:00 /usr/sbin/httpd
apache 3146 0.0 0.2 186180 2528 ? S 09:42 0:00 /usr/sbin/httpd
apache 3147 0.0 0.2 186180 2528 ? S 09:42 0:00 /usr/sbin/httpd
apache 3148 0.0 0.2 186180 2528 ? S 09:42 0:00 /usr/sbin/httpd
apache 3149 0.0 0.2 186180 2528 ? S 09:42 0:00 /usr/sbin/httpd
apache 3150 0.0 0.2 186180 2528 ? S 09:42 0:00 /usr/sbin/httpd
root 3152 0.0 0.0 103320 900 pts/1 S+ 09:42 0:00 grep httpd
CentOS 7 更换 MPM(HTTP/2.4)
切换使用的MPM,编辑此文件即可:/etc/httpd/conf.modules.d/00-mpm.conf
启用要启用的MPM相关的LoadModule指令即可。
[root@Neo ~]# vim /etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_event_module modules/mod_mpm_event.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
[root@Neo ~]# ps -aux | grep httpd
root 8173 0.0 0.5 230480 5188 ? Ss 21:23 0:00 /usr/sbin/httpd -DFOREGROUND
apache 8174 0.0 0.3 230480 3264 ? S 21:23 0:00 /usr/sbin/httpd -DFOREGROUND
apache 8175 0.0 0.3 230480 3264 ? S 21:23 0:00 /usr/sbin/httpd -DFOREGROUND
apache 8176 0.0 0.3 230480 3264 ? S 21:23 0:00 /usr/sbin/httpd -DFOREGROUND
apache 8177 0.0 0.3 230480 3024 ? S 21:23 0:00 /usr/sbin/httpd -DFOREGROUND
apache 8178 0.0 0.3 230480 3744 ? S 21:23 0:00 /usr/sbin/httpd -DFOREGROUND
apache 8179 0.0 0.3 230480 3024 ? S 21:24 0:00 /usr/sbin/httpd -DFOREGROUND
root 8326 0.0 0.0 112708 972 pts/0 S+ 22:06 0:00 grep --color=auto httpd
[root@Neo ~]# vim /etc/httpd/conf.modules.d/00-mpm.conf
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule mpm_worker_module modules/mod_mpm_worker.so
[root@Neo ~]# ps -aux | grep httpd
root 8537 1.5 0.5 230684 5392 ? Ss 22:07 0:00 /usr/sbin/httpd -DFOREGROUND
apache 8538 0.0 0.3 230432 3008 ? S 22:07 0:00 /usr/sbin/httpd -DFOREGROUND
apache 8539 0.0 0.5 517512 5552 ? Sl 22:07 0:00 /usr/sbin/httpd -DFOREGROUND
apache 8540 0.0 0.5 517512 5552 ? Sl 22:07 0:00 /usr/sbin/httpd -DFOREGROUND
apache 8541 0.0 0.5 517512 5556 ? Sl 22:07 0:00 /usr/sbin/httpd -DFOREGROUND
root 8624 0.0 0.0 112708 976 pts/0 S+ 22:07 0:00 grep --color=auto httpd
[root@Neo ~]# httpd -M | grep mpm # 查看当前系统加载的MPM模块
mpm_worker_module (shared)
[root@Neo ~]# vim /etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_event_module modules/mod_mpm_event.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
[root@Neo ~]# httpd -t
Syntax OK
[root@Neo ~]# systemctl restart httpd.service
[root@Neo ~]# httpd -M | grep mpm
mpm_prefork_module (shared)
[root@Neo ~]# ps -aux | grep httpd
root 8641 0.2 0.5 230480 5192 ? Ss 22:09 0:00 /usr/sbin/httpd -DFOREGROUND
apache 8642 0.0 0.3 230480 3024 ? S 22:09 0:00 /usr/sbin/httpd -DFOREGROUND
apache 8643 0.0 0.3 230480 3024 ? S 22:09 0:00 /usr/sbin/httpd -DFOREGROUND
apache 8644 0.0 0.3 230480 3024 ? S 22:09 0:00 /usr/sbin/httpd -DFOREGROUND
apache 8645 0.0 0.3 230480 3024 ? S 22:09 0:00 /usr/sbin/httpd -DFOREGROUND
apache 8646 0.0 0.3 230480 3024 ? S 22:09 0:00 /usr/sbin/httpd -DFOREGROUND
root 8650 0.0 0.0 112708 976 pts/0 S+ 22:09 0:00 grep --color=auto httpd
不需要的模块如何卸载
如果不需要某些模块,可在模块的配置文件中进行注释即可。
如下,显示所有的模块配置文件:
[root@Neo ~]# ls /etc/httpd/conf.modules.d/
00-base.conf 00-dav.conf 00-lua.conf 00-mpm.conf 00-proxy.conf 00-systemd.conf 01-cgi.conf
如果不需要proxy_wstunnel_module (shared)这个模块,可找相应的模块配置文件00-proxy.conf进行相应模块的注释即可。
[root@Neo ~]# httpd -M
proxy_wstunnel_module (shared)
[root@Neo ~]# vi /etc/httpd/conf.modules.d/00-proxy.conf
# This file configures all the proxy modules:
LoadModule proxy_module modules/mod_proxy.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
... ...
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
MPM 配置
- prefork的配置 (使用最多,nigix 使用 event 模型)
<IfModule prefork.c>
StartServers 8 # 启动的进程数量
MinSpareServers 5 # 最小空闲进程数
MaxSpareServers 20 # 最大空闲进程数(应大于等于 Startservers)
ServerLimit 256 # 服务器
MaxClients 256 # 最大的客户连接数量
MaxRequestsPerChild 4000 # 每个子进程处理的最大请求数(超过这个数后,会自动杀死子进程;0 代表处理请求无限制)
</IfModule>
- worker的配置:
<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25 # 每个子进程启用多少线程
MaxRequestsPerChild 0
</IfModule>
4、DSO: Dynamic Shared Object
- httpd -M 所有显示为 shared 的模块,都能被卸载
- 关于模块的配置文件
/etc/httpd/conf.modules.d/* - 要实现对动态模块的卸载,可到相应的配置文件中去注释掉即可,然后重启服务
- 模块的存在配置
/etc/httpd/modules/ - 配置指定实现模块加载
LoadModule <mod_name> <mod_path> - 模块文件路径可使用相对路径
相对于ServerRoot(默认/etc/httpd),注意和文档根DoucmentRoot进行区别
[root@Neo ~]# ls /etc/httpd/modules | grep mpm
mod_mpm_event.so
mod_mpm_prefork.so
mod_mpm_worker.so
# LoadModule auth_basic_module modules/mod_auth_basic.so
5、定义’Main’ server的文档页面路径
-
定义中心服务器:httpd程序在重启时 或者语法检查时,会对本机地址进行反解,如果反解失败,重启服务时,会报错。
可在 /etc/hosts 添加解析 但要保持和 本机的hostname 一致 也可以在配置文件进行修改,把 ServerName 命名为一个主机名
语法格式
ServerName
语法格式: ServerName [scheme://]fully-qualified-domain-name[:port]
DocumentRoot ""
示例
[root@Neo

本文详细介绍了HTTPD服务器的配置,包括修改监听IP和端口、持久连接、MPM设置、DSO、文档根目录、访问控制机制、虚拟主机、日志设定、用户认证、SSL支持等内容,旨在帮助管理员优化和管理HTTPD服务器。
最低0.47元/天 解锁文章
3992

被折叠的 条评论
为什么被折叠?



