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 -DFOREGR