千家信息网

Apache中如何配置httpd-2.2

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家分享的是有关Apache中如何配置httpd-2.2的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Apache是世界使用排名第一的Web服务器软件。它可以运行
千家信息网最后更新 2026年11月02日Apache中如何配置httpd-2.2

这篇文章给大家分享的是有关Apache中如何配置httpd-2.2的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一,其服务名为httpd。apache有很多设置和调优 的注意事项。

1、监听的套接字

Listen [IP:]port

此指令可以出现多次, 用于指定监听多个不同的套接字:

Listen 80Listen 192.168.1.116:8080

2、配置文件中使用的 keep alive

目前多数的浏览器都请求服务器保持持续连接,这种功能就称为"KeepAlive",它是HTTP1.1中的标准规格,一般是用来强化服务器的性能。在使用保持连接功能时,设置客户一次请求连接能影响文件的最大上限,建议把默认值设为ON,以便提高访问性能。但当使用负载均衡时,会影响负载均衡的效果,在未断开连接之前,同义客户端始终被定向到同一台服务器。

KeepAlive {On|Off}   KeepAliveTimeout 2                  #超时时间   MaxKeepAliveRequests 50       #长连接最大请求数

3、MPM

  #判定模块是否存在       StartServers: 默认启动的工作进程数;   #不包括主进程,主进程只是负责子进程的创建回收等       MinSpareServers: 最少空闲进程数;       MaxSpareServers: 最大空闲进程数;       ServerLimit: 最大活动进程数;       MaxClients: 并发请求的最大数;   #请求连接进来不一定会活动,要小于等于serverlimit       MaxRequestsPerChild: 每个子进程在生命周期内所能够服务的最多请求个数; prefork.c>           StartServers:启动的子进程的个数       MaxClients: 并发请求的最大数;       MinSpareThreads:最小空闲线程数;       MaxSpareThreads:最大空闲线程数;       ThreadsPerChild:每个子进程可生成的线程数;       MaxRequestsPerChild:每个子进程在生命周期内所能够服务的最多请求个数,0表示不限定; prefork.c>

4、DSO模块加载方式

   LoadModule module_name /path/to/module

如果使用相对路径,则对于ServerRoot所定义的位置而言;例如:

 LoadModule php5_module /usr/lib64/httpd/modules/php5.so

让服务重载配置文件方能生效;

httpd -M: 列出已经装载的所有DSO及非DSO模块httpd -l: 列出支持使用的非DSO模块

默认使用prefork模块,若想使用worker,则修改脚本配置文件:

[root@localhost conf]# vim /etc/sysconfig/httpd#HTTPD=/usr/sbin/httpd.worker    #启用此项,修改所使用的二进制程序

5、配置站点根目录

DocumentRoot /path/to/somewhere

Apache服务器存放网页的路径,默认所有要求提供HTTP服务的连接,都以这个目录为主目录,默认为 /var/www/html。

6、配置页面访问属性

  "/path/to/somewhere">       Options:        Indexes: 缺少指定的默认页面时,允许将目录中的所有文件以列表形式返回给用户,危险;        FollowSymLinks: 允许跟随符号链接所指向的原始文件;        None: 所有都不启用;        All: 所有都启用;        ExecCGI: 允许使用mod_cgi模块执行CGI脚本;        Includes: 允许使用mod_include模块实现服务器端包含(SSI);        MultiViews:允许使用mod_negotiation实现内容协商;        SymLinksIfOwnerMatch:在链接文件属主属组与原始文件的属主属组相同时,允许跟随符号链接所指向的原始文件;可以配置网站目录下的访问属性,使用"path">可以基于正则表达式的匹配,但是一般不建议使用,会耗费时间。类似的指令还有:"">: 配置URL访问属性,与相似(可以配置像内生的status页面或者定义了别名的路径等);"">  : 限定单个文件的访问属性;"">  : 相当于Location ~  ,但一般建议使用此配置进行正则匹配;

如果某要配置其属性的URL能映射到某具体文件系统路径,建议使用。

7、基于主机的访问控制

"/path/to/somewhere">         Options       AllowOverride None    #AllowOverride表示以下基于ip的访问控制是否被禁用,none表示不被禁用       Order Deny,Allow        #后面的表示默认规则       Allow       Deny

基于IP控制:

      Allow from       Deny from           IP, Network Address           172.16           172.16.0.0           172.16.0.0/16           172.16.0.0/255.255.0.0

二者都匹配或二者都无匹配项时,则以后者为准;否则,则以匹配到的为准;

8、定义默认主页面

DirectoryIndex index.php index.html home.html default.html  #自左而右依次找

9、用户主页

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

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

配置用户主页示例:

[root@localhost conf]# vim httpd.conf  #首先在配置文件中启用以下选项366     #UserDir disabled367368     UserDir public_html[root@localhost httpd]# service httpd reload[root@localhost conf]# useradd feiyu[root@localhost conf]# su -  feiyu[feiyu@localhost ~]$ mkdir public_html[feiyu@localhost ~]$ cd public_html/[feiyu@localhost public_html]$ echo "hello feiyu"  > index.html

此时可以访问了。但apache用户没有权限读取文件,所以还得定义访问权限

[feiyu@localhost ~]$ ls -ld /home/feiyu/drwx------. 6 feiyu feiyu 4096 Feb 15 20:42 /home/feiyu/[feiyu@localhost ~]$ setfacl -m u:apache:x /home/feiyu/[feiyu@localhost ~]$ getfacl /home/feiyu/getfacl: Removing leading '/' from absolute path names# file: home/feiyu/# owner: feiyu# group: feiyuuser::rwxuser:apache:--xgroup::---mask::--xother::---[feiyu@localhost ~]$ curl 192.168.1.117/~feiyu/hello feiyu

10、配置日志功能

默认日志目录:/var/log/httpd/

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

访问日志:CustomLog "/path/to/access_log_file" Format_Name #CustomLog自定义访问日志路径LogFormat Format_String Format_Name

%h: 客户端地址%l: 远程登录名,通常为-%u: 认证时的远程用户名,没有认证时为-%t: 收到请求时的时间;%r: 请求报文的起始行;%>s: 响应状态码;%b: 响应报文的长度,单位为字节%{Header_Name}i: 记录指定请求报文首部的内容(value);

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

错误日志: ErrorLog

11、路径别名

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

意味着访问http://Server_IP/alias/时,其页面文件来自于/path/to/somewhere这个位置; 注意:前后路径要一致,结尾都有"/"或者都没有

12、设定默认字符集

    AddDefaultCharset  UTF-8

定义cgi脚本路径别名:

    CGI: Common Gateway Interface协议(执行某些文件时要以管理员的权限执行,已经很少被使用了)

13、CGI脚本路径别名

CGI: Common Gateway Interface协议(执行某些文件时要以管理员的权限执行,已经很少被使用了)

定义cgi脚本路径别名:

ScriptAlias /URL/ "/path/to/somewhere/"   #使用此种方法定义文件则被使用cgi协议执行或者显式使用execcgi

14、基于用户的访问控制

当你的网站或者站点的某个路径只想让你授权的用户访问时,就可以使用基于用户的访问控制。

虚拟用户:可以使用文件,SQL数据库或者ldap等机制进行认证。认证类型(auth):basic: 基本认证,帐号和密码明文发送;

digest:摘要认证,hash编程之后发送,大多浏览器不支持;

认证提供者(authentication provider):帐号和密码的存放位置

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

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

使用htpasswd命令生成认证库

htpasswd:-c #第一次使用-c创建新文件,不是第一次不要使用此选项-m #用户密码使用MD5加密后存放-s #用户密码使用SHA加密后存放-p #用户密码不加密-d #禁用一个账户-e #启用一个账户[root@localhost fin]# htpasswd -c -m /etc/httpd/conf/.htpasswd feiyu     #第一次需要使用-c选项创建文件New password:Re-type new password:Adding password for user feiyu[root@localhost fin]# htpasswd -m /etc/httpd/conf/.htpasswd feiyu1New password:Re-type new password:Adding password for user feiyu1

配置认证机制

"/www/htdocs/fin">       Options None       AllowOverride AuthConfig       AuthType Basic       AuthName "Private Area"   # AuthBasicProvider file                    #可以不用指,默认为文件       AuthUserFile /etc/httpd/conf/.htpasswd     #所使用的认证文件       Require valid-user      #允许文件中的所有合法账号

访问界面如下所示:

httpd-2.2 配置及用法完全攻略httpd-2.2 配置及用法完全攻略

基于组进行认证

先创建用户再创建组文件:

    组文件格式:       组名: 用户1 用户2 用户3   "/www/htdocs/fin">       Options None       AllowOverride AuthConfig       AuthType Basic       AuthName "Private Area"   # AuthBasicProvider file       AuthUserFile /etc/httpd/conf/.htpasswd       AuthGroupFile /etc/httpd/conf/.htgroup      #所使用的组文件       Require group GroupName    ">

15、虚拟主机

虚拟主机意即一个物理服务器提供多个站点,以前刚建站时使用的是阿里云的免费虚拟主机,我想应该就是基于此方法配置的。虚拟主机的实现方法有三种:

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

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

基于不同的FQDN实现不同的虚拟主机:变化ServerName的参数

配置使用虚拟主机:

(1)注释中心主机,并启用相关配置

[root@localhost http]# vim /etc/httpd/conf/httpd.confDocumentRoot "/var/www/html"     #注释中心主机NameVirtualHost *:80    #使用基于域名的虚拟主机时需要启动此项,并且下面的配置与其保持一致,在 httpd-2.4 中不需要使用

(2)基于ip的虚拟主机:

         ServerName www.feiyu1.com       DocumentRoot "/var/www/html/feiyu1"       ServerName www.feiyu2.com       DocumentRoot "/var/www/html/feiyu2"

(3)基于端口的虚拟主机:

       ServerName www.feiyu1.com       DocumentRoot "/var/www/html/feiyu1"

ServerName www.feiyu2.com DocumentRoot "/var/www/html/feiyu2" (4)基于域名的虚拟主机:

NameVirtualHost *:80       ServerName www.feiyu1.com       DocumentRoot "/var/www/html/feiyu1"       CustomLog "/var/log/httpd/feiyu1-access_log" combined       ServerName www.feiyu2.com       DocumentRoot "/var/www/html/feiyu2"       CustomLog "/var/log/httpd/feiyu2-access_log" combined

16、启用 https 协议

https是在http的基础上进行ssl/tls加密实现的结果,启用https固然更安全,不会存在流量劫持等风险,但使用https就不再是三次握手了,它会增加建立连接的时间。

http与https首次请求对比图:

httpd-2.2 配置及用法完全攻略httpd-2.2 配置及用法完全攻略
httpd-2.2 配置及用法完全攻略httpd-2.2 配置及用法完全攻略

http: 文本协议,80/tcphttps: 二进制格式的协议, 443/tcpSSL握手要完成的工作:

交换协议版本号

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

对两端实现身份验正

密钥交换

SSL会话基于IP地址进行,不支持在基于FQDN的虚拟主机上实现,所以在只有一个公网IP的服务器上使用虚拟主机时,只能为一个站点使用https。

配置支持https:

(1)安装httpd支持ssl模块

[root@localhost ~]# yum install mod_ssl -y

(2)自建CA

[root@localhost ~]# cd /etc/pki/CA[root@localhost ~]# (umask 077; openssl genrsa -out private/cakey.pem 2048)[root@localhost ~]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365

(3)生成私钥

[root@localhost ~]# cd /etc/httpd/conf/[root@localhost ~]# mkdir ssl[root@localhost ~]# cd ssl[root@localhost ~]# (umask 077; openssl genrsa -out httpd.key 1024)

(4)生成证书申请

[root@localhost ~]# openssl req -new -key httpd.key -out httpd.csr

(5)CA签署证书

[root@localhost ~]# openssl ca -in httpd.csr -out httpd.crt -days 365

(6)修改httpd的ssl配置文件

[root@localhost ~]# vim /etc/httpd/conf.d/ssl.confDocumentRoot "/var/www/html/feiyu1"ServerName www.feiyu.comSSLCertificateFile /etc/httpd/conf/ssl/httpd.crtSSLCertificateKeyFile /etc/httpd/conf/ssl/httpd.key

(7)验证导入浏览器

验证,可以使用以下命令进行验证或者将证书导入到浏览器并进行访问:

# openssl s_client -connect IP:port -CAfile /path/to/CA_certificate_file

17、服务器status页面

status页面是httpd内生的,且此信息可以通过web予以显示,此信息是关于服务器的运行状态的所以不能对所有人都显示。

[root@localhost html]# vim /etc/httpd/conf/httpd.confSetHandler server-statusAuthType BasicAuthName "Server Status"AuthUserFile "/etc/httpd/conf/.htpasswd"Require valid-userOrder deny,allowAllow from all

SetHandler: 显式的定义使用的处理器 ,是当文件被调用时,Apache内部表示形式;一般每种文件类型都有其隐式处理器;

18、使用mod_deflate模块压缩页面优化传输速度

一般当CPU多空闲,带宽压力大时才会启用压缩,启用压缩不但能优化传输速度也能节约带宽,但是其一个弊端就是会使缓存的命中率下降。

[root@localhost html]# vim /etc/httpd/conf/httpd.confSetOutputFilter DEFLATE    #启用deflate[root@localhost conf.d]# vim deflate.conf   # 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)   DeflateCompressionLevel 9                     #压缩比,默认为6      # 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

19、资源限定

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

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

使用 ulimit 可以修改软限制:

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

-u [N]: 所能够运行的最多进程数;

其相对应的配置文件为:/etc/security/limits.conf,扩展配置:/etc/security/limits.d/*.conf

root@tianfeiyu # vim /etc/security/limits.conf #设定硬限制apache hard nofile   65535  #设定能打开的最大文件数apache hard nproc 30000#设定能打开的最大进程数

20、httpd程序包自带的工具介绍

httpd:Apache 服务器。

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:执行外部程序前切换用户。运行目录:/etc/httpd配置文件:主配置:/etc/httpd/conf/httpd.conf扩展配置:/etc/httpd/conf.d/*.confSocket: 80/tcp, 443/tcp文档根目录:/var/www/htmlCGI目录:/var/www/cgi-bin/MPM(Multipath Processing Module):多道处理模块,非一个模块,而是对一种特性的称谓多进程模型 prefork: 一个进程响应一个请求(主进程创建进程响应)多线程模型 worker: 一个主进程多个子进程,一个进程生成多个线程,一个线程响应一个请求,一个进程生成的线程数有限事件模型 event: 一个线程响应多个请求,基于事件驱动机制来维持多个用户请求;event-driven: 事件驱动,主要目的在于实现单线程响应多个请求;httpd配置目录信息:服务脚本:/etc/rc.d/init.d/httpd脚本配置文件:/etc/sysconfig/httpd高度模块化:DSO(Dynamic Shared Object)动态化装饰模块MPM(Multipath Processing Module):多道处理模块,非一个模块,而是对一种特性的称谓

感谢各位的阅读!关于"Apache中如何配置httpd-2.2"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

文件 配置 用户 进程 服务 主机 认证 模块 服务器 虚拟主机 路径 目录 最大 日志 线程 不同 多个 脚本 页面 完全攻略 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司简介 互联网与科技金融数据 易互联网科技有限公司 互联网科技公司官网 善班互联网科技有限公司 撒么互联网科技公司 互联网科技英文翻译 互联网科技类展会 新华互联网科技校企合作 互联网科技创新企业排名 上海电发互联网科技有限公司 岳阳华臻互联网科技有限公司 崇明区互联网教育科技售后服务 互联网媒体平台算高科技产业 互联网科技创新的路径 工业互联网山东科技大学 宇信科技在杭州互联网排第几 山东大美朱楼互联网科技有限公司 唐山双旺合互联网科技产业园 银川新华互联网科技学校招聘 中国互联网科技股 互联网科技革命 互联网科技缩写 哈尔滨新华互联网科技 科技互联网的估值 赶超互联网科技 微信多开 互联网5g黑科技有哪些 下一代互联网重大应用科技园 中国科技和美国互联网 兰石爱特工业互联网科技分公司
0