HTTPD的常用配置

本文详细介绍了HTTPD服务器的配置,包括修改监听IP和端口、持久连接、MPM设置、DSO、文档根目录、访问控制机制、虚拟主机、日志设定、用户认证、SSL支持等内容,旨在帮助管理员优化和管理HTTPD服务器。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值