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

apache是一款稳定的流行的web软件,是linux操作系统中默认的web管理软件。在RHEL/Centos系列中可以用rpm直接进行安装,服务名为httpd。apache有很多设置和调优 的注意事项,下面的文章将带你玩爆带你玩转apache,玩转httpd。

1、监听的套接字

  • 01

    Listen [IP:]port 此指令可以出现多次, 用于指定监听多个不同的套接字: Listen 80 Listen 192.168.1.116:8080

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

    • 01

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

      3、MPM

      • 01

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

        4、DSO模块加载方式

        • 01

          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、配置站点根目录

          • 01

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

            6、配置页面访问属性

            • 01

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

              7、基于主机的访问控制

              • 01

                <Direcotry "/path/to/somewhere">        Options        AllowOverride None    #AllowOverride表示以下基于ip的访问控制是否被禁用,none表示不被禁用        Order Deny,Allow        #后面的表示默认规则        Allow        Deny </Direcotry> 基于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、定义默认主页面

                • 01

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

                  9、用户主页

                  • 01

                    如果期望让每个用户都可以创建个人站点:http://Server_IP/~Username/ userdir disablied: 禁止  userdir public_html:public_html是用户家目录下的目录名称,所有位于此目录中的文件均可通过前述的访问路径进行访问 配置用户主页示例: [root@localhost conf]# vim httpd.conf  #首先在配置文件中启用以下选项 366     #UserDir disabled 367 368     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: feiyu user::rwx user:apache:--x group::--- mask::--x other::--- [feiyu@localhost ~]$ curl 192.168.1.117/~feiyu/ hello feiyu

                    10、配置日志功能

                    • 01

                      默认日志目录:/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、路径别名

                      • 01

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

                        12、设定默认字符集

                        • 01

                          AddDefaultCharset  UTF-8 定义cgi脚本路径别名: CGI: Common Gateway Interface协议(执行某些文件时要以管理员的权限执行,已经很少被使用了)

                          13、CGI脚本路径别名

                          • 01

                            CGI: Common Gateway Interface协议(执行某些文件时要以管理员的权限执行,已经很少被使用了) 定义cgi脚本路径别名: ScriptAlias /URL/ "/path/to/somewhere/"   #使用此种方法定义文件则被使用cgi协议执行或者显式使用execcgi

                            14、基于用户的访问控制

                            • 01

                              当你的网站或者站点的某个路径只想让你授权的用户访问时,就可以使用基于用户的访问控制。 虚拟用户:可以使用文件,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 feiyu1 New password: Re-type new password: Adding password for user feiyu1 配置认证机制 <directory "/www/htdocs/fin">        Options None        AllowOverride AuthConfig        AuthType Basic        AuthName "Private Area"    # AuthBasicProvider file                    #可以不用指,默认为文件        AuthUserFile /etc/httpd/conf/.htpasswd     #所使用的认证文件        Require valid-user      #允许文件中的所有合法账号 访问界面如下所示: 基于组进行认证 先创建用户再创建组文件: 组文件格式:        组名: 用户1 用户2 用户3    <directory "/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    </directory ">

                              15、虚拟主机

                              • 01

                                虚拟主机意即一个物理服务器提供多个站点,以前刚建站时使用的是阿里云的免费虚拟主机,我想应该就是基于此方法配置的。虚拟主机的实现方法有三种: 基于不同的IP实现不同的虚拟主机:变化IP 基于不同的port实现不同的虚拟主机:变化port 基于不同的FQDN实现不同的虚拟主机:变化ServerName的参数 配置使用虚拟主机: (1)注释中心主机,并启用相关配置 [root@localhost http]# vim /etc/httpd/conf/httpd.conf DocumentRoot "/var/www/html"     #注释中心主机 NameVirtualHost *:80    #使用基于域名的虚拟主机时需要启动此项,并且下面的配置与其保持一致,在 httpd-2.4 中不需要使用 (2)基于ip的虚拟主机: <VirtualHost 192.168.1.117:80>          ServerName www.feiyu1.com        DocumentRoot "/var/www/html/feiyu1" </virtualhost> <VirtualHost 192.168.1.117:80>        ServerName www.feiyu2.com        DocumentRoot "/var/www/html/feiyu2"</virtualhost> (3)基于端口的虚拟主机: <VirtualHost 192.168.1.117:80>        ServerName www.feiyu1.com        DocumentRoot "/var/www/html/feiyu1"</VirtualHost> <VirtualHost 192.168.1.117:8080> ServerName www.feiyu2.com DocumentRoot "/var/www/html/feiyu2"</VirtualHost>(4)基于域名的虚拟主机: NameVirtualHost *:80 <VirtualHost *:80>        ServerName www.feiyu1.com        DocumentRoot "/var/www/html/feiyu1"        CustomLog "/var/log/httpd/feiyu1-access_log" combined </VirtualHost> <VirtualHost *:80>        ServerName www.feiyu2.com        DocumentRoot "/var/www/html/feiyu2"        CustomLog "/var/log/httpd/feiyu2-access_log" combined </VirtualHost>

                              16、启用 https 协议

                              • 01

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

                              • 02

                                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.conf DocumentRoot "/var/www/html/feiyu1" ServerName www.feiyu.com SSLCertificateFile /etc/httpd/conf/ssl/httpd.crt SSLCertificateKeyFile /etc/httpd/conf/ssl/httpd.key (7)验证导入浏览器 验证,可以使用以下命令进行验证或者将证书导入到浏览器并进行访问: # openssl s_client -connect IP:port -CAfile /path/to/CA_certificate_file

                                17、服务器status页面

                                • 01

                                  status页面是httpd内生的,且此信息可以通过web予以显示,此信息是关于服务器的运行状态的所以不能对所有人都显示。 [root@localhost html]# vim /etc/httpd/conf/httpd.conf <Location /server-status> SetHandler server-status AuthType Basic AuthName "Server Status" AuthUserFile "/etc/httpd/conf/.htpasswd" Require valid-user Order deny,allow Allow from all <Location /server-status> SetHandler: 显式的定义使用的处理器 ,是当文件被调用时,Apache内部表示形式;一般每种文件类型都有其隐式处理器;

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

                                  • 01

                                    一般当CPU多空闲,带宽压力大时才会启用压缩,启用压缩不但能优化传输速度也能节约带宽,但是其一个弊端就是会使缓存的命中率下降。 [root@localhost html]# vim /etc/httpd/conf/httpd.conf SetOutputFilter 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、资源限定

                                    • 01

                                      软限制:可以超出的限制,但仅超出一定时长; 硬限制:绝对不能超出的限制 使用 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程序包自带的工具介绍

                                      • 01

                                        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/*.conf Socket: 80/tcp, 443/tcp 文档根目录:/var/www/html CGI目录:/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):多道处理模块,非一个模块,而是对一种特性的称谓

                                      (0)

                                      相关推荐

                                      • QQ飞车:组队道具之武器用法重点攻略

                                        组队道具之武器用法重点攻略 1.盾 提前开盾是相当必要的,一个准确的提前盾,就可以让你赢的整场的优势!~ 优先考虑,你开盾能否给你的队伍造成优势!~提前开盾,主在防守水泡!~ 一.重要的水点!~ 如飞 ...

                                      • 冒险岛2配置要求及新手指南攻略

                                        冒险岛2延续了冒险岛的经典模式,还加入了沙盒玩法,是一款比较休闲的游戏,也吸引了广大玩家来玩耍打发时间.此次为不少新手介绍下冒险岛2的配置要求及新手指南攻略. 电脑配置要求 01 最低配置 内存至少4 ...

                                      • Linux 配置WWW服务器全攻略

                                        操作方法 01 第一站 Apache的历史与前景1995年,美国国家计算机安全协会(NCSA)的开发者创建了NCSZ全球网络服务软件,其最大的特点是HTTP精灵程序,它比当时的CERN服务器更容易由源 ...

                                      • 帝国时代3-龙骑士的用法完美攻略

                                        龙,鱼鳞.蛇身.鹿角.马鬃.牛鼻.鹰爪,通阴阳,晓变化,能飞腾,善泳跃,自古为神圣之物,帝王之征.披着金色盔缨的龙骑士们宛如一条条出水蛟龙,驰骋于原野,搏杀于沙场,其英姿勃发.潇洒迅捷,又与蛟龙何异! ...

                                      • win2K下IIS5.0配置asp+cgi+php+mysql全攻略

                                        安装win2K,安装IIS Indexing Service, FrontPage 2000 Server Extensions, Internet Service Manager (HTML) 这几 ...

                                      • i7-7700K万元超频组装电脑配置攻略

                                        i7-7700K万元超频组装电脑配置攻略 老司机带你攒高端机 i7-7700K万元超频组装电脑配置攻略 也许有人会问,元宵节你给大家写装机的内容,会不会有点水啊.既然这篇文章是写给大家看的,就得体现笔 ...

                                      • 思科模拟器实验攻略:[4]交换机基本配置

                                        Cisco Packet Tracer(思科模拟器)构建CCNA实验攻略 操作方法 01 配置交换机名称 进入全局配置模式,输入命令"hostname Cisco_2960",其中 ...

                                      • 七雄争霸武将宝石配置最新攻略

                                        七雄争霸武将宝石配置怎么才是最好的呢?下面就跟大家一起来分享一下武将宝石配置的最新攻略,希望对大家有所帮助! 步骤/方法 01 重楼.百战.攻城,武将宝石搭配 步将,石头选择,攻.防.体.敏 组合1, ...

                                      • 《神仙道》命格配置之PK及打怪分析攻略

                                        命格应该分为两套配置,第一套用于打boss,第二套用于pk,下面先对各种进行分析,最后给出直观的结论,懒得看分析的玩家可以直接看结论. 操作方法 01 具体分析如下,打boss不用考虑防御和血目前玩家 ...