本文主要讲述httpd的主配置文件中可以配置的选项以及参数,以2.2系列的为主,在http2.4以后会添加一些新的功能和模块,配置文件可能也会有一些差别,关于2.4的配置文件将在后续推出,敬请期待!

如果httpd是yum安装或者是rpm包安装的话,主配置文件会默认保存在/etc/httpd/conf/httpd.conf

/etc/httpd/conf.d/*.conf为主配置文件的辅助性配置文件

1、监听套接字

Listen [IP:]port

此指令可以出现多次,用于指定监听多个不同的套接字,IP地址可以省略,如果IP地址省略则表示监听在本机所有的ip地址上

2、配置实用Keepalive,主要是配置保持连接中的超时时间和最大连接数

KeepAlive {On|Off}

KeepAliveTimeout 2 超时时间为2s,单位默认为s

MaxKeepAliveRequests 50 最大连接数

3.MPM,为多道处理模块

prefork:一个进程响应一个请求

worker:一个进程生成多个线程,一个线程响应一个请求

event:一个进程同事响应多个请求,但不会生成线程

http -l 查看编译进内核的模块

如果向使用不同的MPM,直接修改文件/etc/sysconfig/httpd文件中的HTTPD项即可

<IfModule preforck.c> 判断模块是否存在

StartServers  默认启动的工作进程数

MinSpareServers 最少空闲进程数

MaxSpareServers 最大空闲进程数

ServerLimit  最大活动进程数

MaxClients  最大并发连接数,最多允许发起的连接请求个数

MaxRequestsPerChild 每个子进程在生命周期内最大允许服务的请求个数

</IfModule>

<IfModule worker.c>

StartServers 默认启动的工作进程数

MaxClients 最大并发连接数

MinSpareThreads 最少空闲线程数

MaxSpareThreads 最多空闲线程数

ThreadsPerChild 每个自己进程生成的线程数

MaxRequestsPerChild 每个子进程在生命周期内最大允许服务的请求个数

</IfModule>

4.DOS模块的加载方式,动态模块

LoadModule module_name /path/to/module

可以使用绝对路径,也可以使用相对路径,如果使用相对路径,则是相对于ServerRoot所定义的位置而言的

httpd -m 列出所有已加载的DOS模块与非DOS模块

5.配置站点根目录

DocumentRoot /path/to/somewhere

只能使用绝对路径

6.页面访问属性

<Direcotry "/path/to/somewhere">

Options 选项

Indexes:缺少指定的默认主页时,允许将目录中的所有文件以列表形式返回给用户,危险:慎用

FollowsymLinks:允许跟随符号链接所指向的岁暗示文件

None:所有的都不启用

All: 所有的都启用

ExecCGI: 允许使用mod_cgi模块执行CGI脚本

Includes: 允许mod_include模块实现服务器端包含

IncludesNOEXEC:允许包含但不允许执行CGI脚本

MultiViews:允许使用mod_negotication实现内容协商

SymLinksIfOwnerMatch:在链接文件属主属组与原始文件的属主属组相同时,允许跟随符号连接所指向的原始文件

</Direcotry>

7.基于主机的访问控制(2.2系列的配置)

<Direcotry "/path/to/somewhere">

Options

AllowOverride

None 不禁用下面选项

Order 次序,写在后面的为默认

allow,deny: 没有允许的都拒绝

deny,allow:没有拒绝的都允许

Allow from   允许通过的主机

Deny from    拒绝通过的主机

可以是单独的ip地址,也可以是一个网段

192.168.0

192.168.0.0

192.168.0.0/24

192.168.0.0/255.255.255.0

表示的都为192.168.0网段

</Direcotry>

如果都匹配或都不匹配时则以默认的为准,否则以匹配到的为准

8.定义默认主页面

DirectoryIndex

查询顺序为依次查询

9.用户目录

如果期望让每个用户都可以创建个人站点,基于http://Sevrer_IP/~Username/

userdir disablied:禁止

userdir public_html: 是指用户家目录下的目录名称,所有位于此目录中的文件均可以通过前述的访问路径进行访问

用户的家目录得赋予运行http进程的用户拥有执行权限,可以通过setfacl -m来进行设置

10.配置日志功能

access.log 访问日志,其需要记录的内容需要自定义

error.log 错误日志,

访问日志:

CustomLog "/path/to/log_file" LogFormat

LofFormat定义的日志格式,只解释最常用的一种

"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""

%h: 客户端地址

%l:远程的登陆名,通常为-

%u: 认证时的远程用户名,通常为-

%t: 接收到的请求时的时间,为标准英文格式时间+时区

\":表示转义,显示"

%r:请求报文的起始行

%>s: 响应状态码

%b:以字节响应报文的长度,不包含头报文

%{Referer}i:记录指定请求报文首部的内容

%{User-Agent}i:用户使用的工具

详情请参考:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

11.路径别名

Alias /alias/ "/path/to/somewhere"

意味着访问http://Server_IP/alias时,其页面文件来自于/path/to/somewhere中

12.指定默认的字符集

AddDefaultCharset

13.脚本路径别名(CGI接口)

CGI:Common Gateway Interface(通用网关接口)使web可以跟一个应用程序进行通信,从通信环境中获得结果,前提必须加载mod_alias和mod_cgi模块

一般在第一行写入 echo “Content-Type:text/html”

ScriptAlias /URL/ "/path/to/somewhere" somewhere下的文件可以被执行

格式一般为

cat << EOF

Content-Type:text/html

<pre>

The Time is : `date`

</pre>

EOF

14.基于用户的访问控制

虚拟用户:不是系统上的用户,只是为了获取某种特定的资源烈性的一种虚拟用户

可以基于文件、SQL数据库、DBM、ldap认证

认证类型(auth)

basic:基本认证,账号和密码以明文发送

digest:摘要认证,hash编号以后再发送

认证提供者(authentiation provide):账号和密码的存放位置

授权机制(authorization):根据什么进行授权

案例:基于文件,做基本认证根据用户和组进行授权

1、编辑配置文件,为需要认证的目录配置认证机制

<Directory "/www/htdocs/fin">

options None

AllowOverride AuthConfig 使用认证配置

AuthType Basic 使用基本认证

AuthName "Private Area" 质询时标题

AuthUserFile /etc/http/conf/.htpasswd  密码的存放位置

Require vaild-user 可访问的用户

</Directory>

2、使用htpsswdm命令使用生成认证库

htpasswd

-c 创建密码,创建第一个用户时使用

htpasswd -c -m /etc/http/conf/.htpasswd tom

-m MD5格式存放

-b 批量模式

-D 删除用户

3、基于组认证

<Directory "/www/htdocs/fin">

options None

AllowOverride AuthConfig 使用认证配置

AuthType Basic 使用基本认证

AuthName "Private Area" 质询时标题

AuthgroupFile /etc/http/conf/.htpasswd  密码的存放位置

Require group GroupName  可访问的用户

</Directory>

先创建用户,在创建组

组文件:

组名:用户1 用户2 用户3

15.虚拟主机

一个物理服务器提供多个站点;使用虚拟要先取消中心主机

基于不同的IP实现不同的虚拟主机:变化IP

基于不同的port实现不同的虚拟主机:变化port

基于不同的主机名实现不同的虚拟主机:变化ServerName的值

通过请求报文中的HOST来实现不同的虚拟主机的访问

<VirtualHost IP:port>

SeverName

DocumentRoot ""

<Directory "">

</Directory>

ServerAlias

ServerAdmin

</VirtualHost>

虚拟主机可以单独配置用户认证、访问日志、错误日志、别名、脚本别名等

16.https协议,监听在tcp的443端口

X509.3证书格式

证书格式的版本号

证书序列号

证书签名算法

证书颁发者

有效期

持有者的名称

持有者的公钥

CA的ID

持有者的ID

其他扩展信息

基本约束

证书策略

密钥的使用限制

CA签名

ssl握手要完成的工作

交换协议版本号

选择一个双方都支持的加密方式

对两端实现身份验证

密钥交换

SSL会话基于IP地址进行:不支持在基于主机名的虚拟主机上实现

客户端验证服务器端证书时:

日期检查:证书是否在有效期内

证书颁发者的可信度

证书的签名检测:

持有者的身份检测:

httpd:基于mod_ssl模块实现对于ssl的支持

步骤:

1)、准备好服务器的私钥和证书

2)、安装mod_ssl模块

yum -y install mod_ssl

3)、配置/etc/httpd/conf.d/ssl.conf

配置基于ssl的虚机主机

ServerName

DocunmentRoot

配置证书和私钥

SSLCertificatFile 证书文件

SSLCertificatKeyFile 密钥文件

4)、重启httpd服务

5)、测试

openssl s_client

-connet:验证的地址:端口

-CAfile:CA证书的路径

17.服务器status页面,

内生的status信息,且此信息可以通过web予以显示出来

基于目录的访问属性

<Directory [~] "">

</Directory>

基于URL访问属性

<Location [~] "">

</Location>

基于单个文件的访问属性

<File [~] "">

</File>

也可以使用<LocationMatch "" > </LocationMatch>来实现正则表达式的配置

如果要配置其属性的URL能映射到牟文建系统路径,建议使用Directory

处理器:当问及被调用时,Apache内部表现形式,一般每种文件类型都有其隐式处理器,否则需要自己定义

显示的定义使用的处理器:SetHandler

<Location /URL>

SetHandler server-status

</Location>

其也可以定义访问控制,包括基于IP的认证和基于用户的认证

实例:

<Location /server-status>

SetHandler sever-status

AuthType Basic

AuthName "Sever Status"

AuthUserFile "/etc/http/conf/.htpasswd"

Require valid-user

Order deny,allow

Allow from all

</Location>

18、使用mod_deflate模块压缩页面优化传输速度,可以写为一行,也可以写多行,默认为gzip

SetOutputFilter DEFLATE

<IfModule mod_deflate.c>

# Restrict compression to these MIME types

AddOutputFilterByType DEFLATE text/plain

AddOutputFilterByType DEFLATE text/html

AddOutputFilterByType DEFLATE application/xhtml+xml

AddOutputFilterByType DEFLATE text/xml

AddOutputFilterByType DEFLATE application/xml

AddOutputFilterByType DEFLATE application/x-javascript

AddOutputFilterByType DEFLATE text/javascript

AddOutputFilterByType DEFLATE text/css

# Level of compression (Highest 9 - Lowest 1)默认为6

DeflateCompressionLevel 9

# Netscape 4.x has some problems.

BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems

BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine

BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

</IfModule>

18、资源限定

软限制:可以超出的限制,但仅能超出一定时长

硬限制:绝对不能超出的限制

ulinit:只能修改软连接

-n [N]:显示或修改能打开的最大的文件句柄数

-u [N]:显示或修改能打开的最大进程数

如果要修改硬限制

/etc/security/limits.conf或者配置tc/security/limits.d/*.conf

格式为

对谁进行限制   类型 要限制的选项  值

测试工具

curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法, FTP上传, kerberos认证,HTTP上传,代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传,,http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器,,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。

curl的常用选项:

-A/--user-agent <string> 设置用户代理发送给服务器,即告诉服务器浏览器为什么

-basic 使用HTTP基本验证

--tcp-nodelay 使用TCP_NODELAY选项

-e/--referer <URL> 来源网址,跳转过来的网址

--cacert <file> 指定CA证书 (SSL)

--compressed 要求返回是压缩的形势,如果文件本身为一个压缩文件,则可以下载至本地

-H/--header <line>自定义头信息传递给服务器

-I/--head 只显示响应报文首部信息

--limit-rate <rate> 设置传输速度

-u/--user <user[:password]>设置服务器的用户和密码

-0/--http1.0 使用HTTP 1.0

测试工具

ab工具的初步使用

-c 模拟的并发数

-n 模拟的总请求数

一般并发数应该小于等于请求数

http_load webbench seige(只做参考)

http的扩展功能

apachectl

Apache HTTP服务控制工具

ab

Apache HTTP服务器性能测试工具

apxs

Apache 扩展工具

configure

配置源代码

dbmmanage

为基本认证创建和更新DBM格式的用户认证文件

htcacheclean

清理磁盘缓存

htdigest

为摘要认证创建和更新用户认证文件。

htdbm

操作 DBM 密码数据库。

htpasswd

为基本认证创建和更新用户认证文件。

httxt2dbm

为 RewriteMap 创建 dbm 文件。

logresolve

将 Apache 日志文件中的 IP 地址解析到主机名称。

rotatelogs

不关闭 Apache 而切换日志文件。

suexec

执行外部程序前切换用户。

本文转自wangfeng7399 51CTO博客,原文链接:http://blog.51cto.com/wangfeng7399/1379366,如需转载请自行联系原作者

httpd二之主配置文件详解、测试工具、压力测试ab相关推荐

  1. Linux日志系统-03:logrotate主配置文件详解

    logrotate主配置文件详解 一.logrotate主配置文件/etc/logrotate.conf # see "man logrotate" for details # r ...

  2. nginx 访问图片404_Nginx学习笔记(二、Nginx配置文件详解) - 被猪附身的人

    nginx的启停控制 1.Nginx信号控制: nginx中可以通过发送信号的方式来控制服务器的启停等,但要达成这些操作首先要知道nginx的PID. 获取pid的方式有两种: 利用linux的ps命 ...

  3. linux dns主配置文件,RHEL 5下DNS的主配置文件详解

    wangyu 于 2009-10-09 17:16:05发表: 用RHEL5默认安装了DNS服务,当使用service named start时发现缺少named.conf.如下所示: [root@l ...

  4. docker搭建并使用AB(apache bench)测试工具压力测试

    构建镜像 构建镜像准备: 了解alpine: Alpine Linux 是一个社区开发的面向安全应用的轻量级Linux发行版 构建的Alpine基础镜像的大小为6M 左右 -特点就是小 比咱们使用的l ...

  5. Nginx(二):反向代理原理 与 配置文件详解

    相关阅读: Nginx(一):Nginx原理概述 与 安装步骤详解 Nginx(二):反向代理原理 与 配置文件详解 Nginx(三):负载均衡策略 与 Nginx静态服务器 Nginx(四):Ngi ...

  6. apache配置文件详解与优化

    apache配置文件详解与优化 一.总结 一句话总结:结合apache配置文件中的英文说明和配置详解一起看 1.apache模块配置用的什么标签? IfModule 例如: <IfModule ...

  7. httpd2.2配置文件详解

    一丶Apache常用目录详解 1) /etc/httpd/conf/httpd.conf httpd.conf是Apache的主配文件,整个Apache也不过就是这个配置文件,里面几乎包含了所有的配置 ...

  8. django整体文件结构、配置文件详解

    前言: 前文介绍了django及pycharm的安装配置,后续开始说明django的详细配置及编写方式,本文主要说明django的配置文件设置,会结合实际问题及使用场景进行说明,本文中只介绍常用的及一 ...

  9. BIND配置文件详解(二)

    本文档摘录自<BIND9管理员手册>,如果有不对或者不清楚的地方,请大家告诉我,谢谢!   BIND配置文件详解(二)   6.options语句 options语句的定义和使用: opt ...

最新文章

  1. 2021年大数据基础(三):​​​​​​​​​​​​​​​​​​​​​大数据应用场景
  2. 使用windbg定位内存问题【入门级】
  3. cdn属于一种技术吗
  4. 关于[一个基于WF的业务流程平台]表设计的说明
  5. NAACL’21 | 来看如何让模型学会因为所以但是如果
  6. STM32部分功能所在文件位置
  7. Journey Of Code组组员贡献率
  8. 如何成为Linux平台C语言程序员(转)
  9. test luasql's postgresql driver performance (not better than pgbench)
  10. 数据库表格数据导出到excel方法总结
  11. HashMap内部存储实现及HashTable比较
  12. 数据库课程设计(饭店点餐系统)
  13. yyuc视图未更新,控制器修改可以看到,视图无法更新,提示Allowed memory size of exhausted
  14. 微信加人限制2017版
  15. iFIX组态软件在某电厂辅控系统的应用
  16. ug添加imachining变量_UG变量设置
  17. 趁我们还年轻,就应该奋斗
  18. RHCE 7.0 考试命令整理
  19. 软件项目外包的合作流程是怎样的?
  20. 普元中间件部署应用程序

热门文章

  1. [Q]Sending non-protected broadcast问题分析
  2. 一文带你了解芯片制造的6个关键步骤
  3. mysql-proxy安装,MYSQL-PROXY的安装与使用
  4. 将现有的系统环境文件打包成Docker镜像文件
  5. 人工智能实战第三次作业_尹正超
  6. 华为Watch Buds耳机为什么佩戴时会不稳、松动,容易掉怎么戴都戴不牢?
  7. 【genius_platform软件平台开发】第八十八讲:arm公司的V架构和内核发展史(整理)
  8. hover 在 ie 中使用失效问题
  9. 短信验证码—Java实现
  10. 3ds max学习笔记(十二)-- (弯曲:实例旋转楼梯)