这里我们能够看到,不仅将服务器的版本暴露了出来,连操作系统的信息也显示了出来。下面我们介绍一下Httpd服务器显示信息的设置。 使用ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full 配置。
# 只显示产品名称 ServerTokens Prod[uctOnly] :Server: Apache # 显示大版本号 ServerTokens Major: Server: Apache/2 # 显示小版本号 ServerTokens Minor: Server: Apache/2.2 # 显示精确的版本号 ServerTokens Min[imal]: Server: Apache/2.2.15 # 显示系统 ServerTokens OS: Server: Apache/2.2.15 (CentOS) #全部都显示 ServerTokens Full (or not specified): Server: Apache/2.0.41(Unix) PHP/4.2.2 MyMod/1.2通常来说,推荐使用 prod 方式,暴露的信息越少,相对的也就乐安全。
2、修改监听的IP和PORT配置的格式为 Listen [IP:]PORT
省略IP表示为0.0.0.0;
Listen指令至少一个,可重复出现多次
修改监听socket,重启服务进程方可生效
3、持久连接Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成,默认关闭持久连接。
断开持久连接的条件:
数量限制:假设设定的100
时间限制:以秒为单位,HTTPD-2.4支持毫秒级。
副作用:对并发访问量较大的服务器,持久连接功能会使用有些请求得不到响应
解决办法:使用较短的持久连接时间。
httpd 2.2 提供了三种不同类型的多路处理模块。prefork,worker,event(实验阶段)。 想要指定相应的处理模块,修改/etc/sysconfig/httpd 文件。
每一种多路处理模块都有相应的配置,打开 /etc/httpd/conf/httpd.conf
prefork模块的配置信息
其中参数的含义如下所示。
StartServers : 服务开始时的默认进程数
MinSpareServers : 进程数最少数量
MaxSpareServers : 最大的空闲进程数
ServerLimit : 最大的进程数,最大20000
MaxClients : 最大的并发数量
MaxRequestsPerChild : 子进程最多能处理的请求数量。在处理MaxRequestsPerChild 个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放(为0时永远不释放)
worker模块的配置信息
其中参数的含义如下所示。
StartServers : 服务开始时的默认进程数
MaxClients : 最大的并发数量
MinSpareThreads: 最小的空闲线程数量,低于这个数量,系统就会立马开启新的进程
MaxSpareThreads: 最大的空闲线程数量,这个值可能会与StartServers值冲突
ThreadPerChild : 每个进程支持的线程数量,因为这个值会导致StartServers和MaxSpareThreads 值产生冲突。
MaxRequestsPerChild : 子进程最多能处理的请求数量。在处理MaxRequestsPerChild 个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放(为0时永远不释放)
5、DSO: Dynamic Shared Object 动态模块配置使用 httpd -M命令可以查看目前已经加载的动态模块。
配置指定实现模块加载格式:LoadModule <mod_name> <mod_path> 模块文件路径可使用相对路径:相对于ServerRoot(默认/etc/httpd,在/etc/httpd/conf/httpd.conf 文件中已经指定ServerRoot)
例如 auth_basic_module modules/mod_auth_basic.so就是指定用户在访问服务器的时候需要提供身份验证的模块。
6、 定义’Main’ server的文档页面路径