快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

httpd配置-创新互联

CentOS 6:httpd-2.2
         程序环境:
            配置文件:
               /etc/httpd/conf/httpd.conf
               /etc/httpd/conf.d/*.conf
            服务脚本:
               /etc/rc.d/init.d/httpd
               脚本配置文件:/etc/sysconfig/httpd
            主程序文件:
               /usr/sbin/httpd
               /usr/sbin/httpd.event
               /usr/sbin/httpd.worker
            日志文件:
               /var/log/httpd:
                  access_log:访问日志
                  error_log:错误日志
            站点文档:
               /var/www/html(页面文件)
            模块文件路径:
               /usr/lib64/httpd/modules

            服务控制和启动:
               chkconfig httpd on|off
               service {start|stop|restart|status|configtest|reload} httpd

成都创新互联主要从事成都网站设计、成都网站制作、外贸网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务岚山,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108

常用配置:
         1、修改监听的IP和PORT

       # vim /etc/httpd/conf/httpd.conf

httpd 配置                        (1) 省略IP表示为0.0.0.0;
               (2) Listen指令可重复出现多次;
                  Listen 80
                  Listen 8080
               (3) 修改监听socket,重启服务进程方可生效;
        注意:改配置文件需要重启服务 service httpd restart

        netstat -tnlp(查看当前启动的服务所用的端口)

        2、持久连续
     tcp连续建立后,每个资源获取完成后不全断开连接,而是继续等待其它资源请求的进行;
   副作用:对并发访问量较大的服务器,长连接机制会使得后续某些请求无法得到正常 响应;
   折衷:使用较短的持久连接时长,以及较少的请求数量;
               KeepAlive On|Off(是否开启持久连续)
               KeepAliveTimeout 15(时间限制)
               MaxKeepAliveRequests 100(数量限制

  # vim /etc/httpd/conf/httpd.conf

httpd 配置

     重启服务 service httpd restart

   3、MPM
            httpd-2.2不支持同时编译多个MPM模块,所以只能编译选定要使用的那个;

               CentOS 6的rpm包为此专门提供了三个应用程序文件:

               httpd(prefork),    httpd.worker,     httpd.event

            查看现在使用的是哪个程序文件的方法启动了多少进程:
             #   ps aux | grep httpd

               第一行为主控进程(管理进程的创建和销毁)

            默认使用的为/usr/sbin/httpd,其为prefork的MPM模块 ;
               查看httpd程序的模块列表:
                  查看静态编译的模块:
                     # httpd -l
                  查看静态编译及动态编译的模块:
                     # httpd -M

             更换使用httpd程序,以支持其它MPM机制;
             #  vim /etc/sysconfig/httpd
                  HTTPD=/usr/sbin/httpd.{worker,event}

            注意:重启服务进程方可生效

                        # service httpd restart

MPM配置:
            # vim /etc/httpd/conf/httpd.conf
               prefork的配置
                  (如果prefork存在)
                  StartServers      8(启动多少空闲进程)
                  MinSpareServers   5(最少空闲进程数)
                  MaxSpareServers  20(大空闲进程)
                  ServerLimit     256(允许MaxClients大启动的进程数量)
                  MaxClients      256(大允许启动的进程数量)
                  MaxRequestsPerChild 4000(每个进程最多可处理多少请求,处理了4000个就要销毁此进程)
                  


               worker的配置:
                  
                  StartServers        4(启动多少空闲进程)
                  MaxClients        300(大允许启动的进程数量)
                  MinSpareThreads    25(最少空闲进程数)
                  MaxSpareThreads    75(最多空闲进程数)
                  ThreadsPerChild    25(每个主进程大可生成多少线程)
                  MaxRequestsPerChild 0(每个进程可处理无上限的请求)
                  


            PV,UV
               PV:Page View(页面浏览量)
               UV: User View(用户浏览量)

4、DSO(动态共享模块)
            配置指定实现模块加载
               LoadModule  (模块文件路径)

               模块文件路径可使用相对路径:
                  相对于ServerRoot(默认/etc/httpd)

5、 定义访问主文档页面路径

   # vim /etc/httpd/conf/httpd.conf

      DocumentRoot " "

文档路径映射:
               DoucmentRoot指向的路径为URL路径的起始位置
                  其相当于站点URL的根路径;

注意:重启服务进程方可生效

                        # service httpd restart

6、站点访问控制常见机制

              # vim /etc/httpd/conf/httpd.conf
            可基于两种机制指明对哪些资源进行何种访问控制

               文件系统路径:
                  
                  ...
                  

                  
                  ...
                  

                  
                  ...
                  
               URL路径:
                  
                  ...
                  

                  
                  ...
                  


            中“基于源地址”实现访问控制:
               (1) Options
                  后跟1个或多个以空白字符分隔的“选项”列表;
                     Indexes:指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户;(建议关掉)
                     FollowSymLinks:允许跟踪符号链接文件所指向的源文件(建议关掉);
                     None:一个也没有
                     All:全部
                  建议改为:Options None

                   (2) AllowOverride(允许覆盖)
                  与访问控制相关的哪些指令可以放在.htaccess文件(每个目录下都可以有一个)中;
                     All: 全部
                     None:一个也没有
                  建议改为:AllowOverride None
               (3) order和allow、deny拒绝
                  order:定义生效次序;写在后面的表示默认法则;

                  Allow from来源地址, Deny from来源地址
                     来源地址:
                        IP
                        NetAddr:(网络地址)
                           172.16
                           172.16.0.0
                           172.16.0.0/16
                           172.16.0.0/255.255.0.0
                  1、e.g.设置为仅允许172.16网段的主机访问:Allow from 172.16
                  2、e.g.Deny from 172.16.100.88
                     Allow from 172.16

           (仅允许172.16网段的主机访问,但 172.16.100.88这台不能访问)

7、定义站点主页面:

        # vim /etc/httpd/conf/httpd.conf

            DirectoryIndex index.html index.html.var(先找index.html没有找到,就找index.html.var)

8、定义路径别名

 # vim /etc/httpd/conf/httpd.conf

           格式:
               Alias /URL/ "/PATH/TO/SOMEDIR/"

            DocumentRoot "/www/htdocs"
               http://www.magedu.com/download/bash-4.4.2-3.el6.x86_64.rpm
                  /www/htdocs/download/bash-4.4.2-3.el6.x86_64.rpm

            Alias /download/ "/rpms/pub/"
               http://www.magedu.com/download/bash-4.4.2-3.el6.x86_64.rpm

                  /rpms/pub/bash-4.4.2-3.el6.x86_64.rpm

               http://www.magedu.com/p_w_picpaths/logo.png
                  /www/htdocs/p_w_picpaths/logo.png

         9、设定默认字符集(为防止“语言”不通,响应的页面看不懂。)
            AddDefaultCharset UTF-8

            中文字符集:GBK, GB2312, GB18030

          10、日志设定
            日志类型:访问日志 和 错误日志

            错误日志

               ErrorLog logs/error_log

               LogLevel warn(警告)
               错误级别: debug(所有错误的都记录下来), info(比debug更高级), notice(引起关注), warn(警告), error(发生错误), crit(级别很严重), alert(红色警戒), emerg(紧急事务).

            访问日志:查看访问日志:#tail /var/log/httpd/access_log
               LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
               CustomLog logs/access_log combined

               LogFormat format strings:(LogFormat格式符意思)
                  http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

                  %h:客户端IP地址;
                  %l:客户端用户名, 通常为一个减号(“-”);
                  %u:客户端用户 (from auth; may be bogus if return status (%s) is 401);非为登录访问时,其为一个减号;
                  %t:服务器收到请求时的时间;
                  %r:First line of request,即表示请求报文的首行;记录了此次请求的“方法”、“URL”以及协议版本;
                  %>s:响应状态码;
                  %b:响应报文的大小,单位是字节;不包括响应报文的http首部;
                  %{Referer}i:请求报文中首部“referer”的值;referer即从哪个页面中的超链接跳转至当前页面的;
                  %{User-Agent}i:请求报文中首部“User-Agent”的值;即发出请求的应用程序;

          11、基于用户的访问控制

           认证方式有两种:
                  basic:明文
                  digest:消息摘要认证

     此处使用 basic认证。

 # vim /etc/httpd/conf/httpd.conf

httpd 配置

basic认证配置示例:
                 定义安全域
                  (定义哪个页面资源访问时需要认证)
                     Options None
                     AllowOverride None
                     AuthType Basic(认证类型)
                     AuthName "String“(认证提示符)
                     AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE"(认证时的账号密码所在的路径)
                     Require user username1 username2 ...(指明可登陆的用户;允许账号文件中的所有用户登录访问:Require  valid-user)
                  

      创建账号密码文件AuthUserFile :

                   htpasswd [options]  /PATH/TO/HTTPD_PASSWD_FILE username
                        -c:自动创建此处指定的文件,因此,仅应该在此文件不存在时使用;
                        -m:md5格式加密
                        -s: sha格式加密
                        -D:删除指定用户
                  e.g. htpasswd -c -m /etc/httpd/conf/.htpasswd tianxudong
                   注意:首次添加用户时使用-c,之后都不能使用,否则会覆盖里面原有的用户信息。

基于组账号进行认证;

# vim /etc/httpd/conf/httpd.conf

httpd 配置

            相比定义用户访问控制,多加一个组认证的文件。
                        AuthGroupFile "/PATH/TO/HTTPD_GROUP_FILE"
                        Require group grpname1 grpname2 ..


   创建用户账号和组账号文件;
       #vim /etc/httpd/conf/.htgroup

           mygrp: tianxidong


      组文件:每一行定义一个组
                        GRP_NAME: username1 username2 ...

    12、虚拟主机
            有三种实现方案:
               基于ip:
                  为每个虚拟主机准备至少一个ip地址;
               基于port:
                  为每个虚拟主机使用至少一个独立的port;
               基于FQDN:
                  为每个虚拟主机使用至少一个FQDN;

          注意:一般虚拟机不要与中心主机混用;因此,要使用虚拟主机,得先禁用'main'主机;
     禁用方法:注释中心主机的DocumentRoot指令即可;

         虚拟主机的配置方法:
               (虚拟主机所监听的端口地址)
                  ServerName FQDN(若没有用name标示,则无需写FQDN)
                  DocumentRoot ""(虚拟主机的站点文件路径)
               

               其它可用指令:
                  ServerAlias:虚拟主机的别名;可多次使用;
                  ErrorLog:(此虚拟主机专用的错误日志)
                  CustomLog:(此虚拟主机专用的访问日志)
                  (基于路径对资源做访问控制)
                  ...
                  

                  Alias(路径别名)
                  ...

   e.g. 不同IP访问不同站点:

                  注释掉主配置文件的DocumentRoot

                     编译一个文件:
                    # vim /etc/httpd/conf.d/vhosts.conf
                             
                                    ServiceName www.a.com
                                    DocumentRoot "/www/a.com/htdocs"
                             


                             
                                    ServiceName www.b.net
                                    DocumentRoot "/www/b.net/htdocs"
                             


                             
                                    ServiceName www.c.org
                                    DocumentRoot "/www/c.org/htdocs"
                             

                     语法检查:httpd -t
                     重启服务:service httpd reload

    e.g.  基于端口的虚拟主机:
               首先添加3个端口:可参考上面的常用配置 1 。
               语法检查:httpd -t

               编译一个文件:
                    # vim /etc/httpd/conf.d/vhosts.conf

               
                  ServerName www.a.com
                  DocumentRoot "/www/a.com/htdocs"
               


               
                  ServerName www.b.net
                  DocumentRoot "/www/b.net/htdocs"
               


               
                  ServerName www.c.org
                  DocumentRoot "/www/c.org/htdocs"
               

               语法检查:httpd -t
                    重启服务:service httpd reload

       e.g.  基于FQDN的虚拟主机:(端口一样、地址一眼样)
               NameVirtualHost 172.16.100.6:80(基于FQDN的虚拟主机需要加一个专门的指令,Centos7不需要此指令)

               
                  ServerName www.a.com
                  DocumentRoot "/www/a.com/htdocs"
               


               
                  ServerName www.b.net
                  DocumentRoot "/www/b.net/htdocs"
               


               
                  ServerName www.c.org
                  DocumentRoot "/www/c.org/htdocs"
               

               语法检查:httpd -t
                    重启服务:service httpd reload

         13、status页面(查看运行中的进程详细情况,应加以访问认证)
            LoadModule status_module modules/mod_status.so
            编辑主配置文件,将以下几行启用。
            
               SetHandler server-status
               Order allow,deny
               Allow from 172.16(建议设置为只允许某台主机访问)
            

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

         适用场景:
            (1) 节约带宽,额外消耗CPU;同时,可能有些较老浏览器不支持;
            (2) 压缩适于压缩的资源,例如文件文件;

       # vim /etc/httpd/conf/httpd.conf

httpd 配置

                         语法检查:httpd -t
                         重启服务:service httpd reload

CentOS 6上编译安装httpd2.4版本:

        CentOS 6默认apr和 apr-util是1.39版的,而httpd2.4,需要 apr和 apr-util 是1.4版本以上的。

             可以去 apr.apache.org官网下载1.4版本的。

          开发环境包组:Development Tools, Server Platform Development
          开发程序包:pcre-devel

            先关掉httpd服务不要开机自动启动
            # service httpd stop
            # chkconfig httpd off

            编译安装步骤:
               (1) apr-1.4+
                  # ./configure --prefix=/usr/local/apr
                  # make && make install

               (2) apr-util-1.4+
                  # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
                  # make && make install

               (3) httpd-2.4
                  # ./configure --prefix=/usr/local/apache24 --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
                  # make && make install

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:httpd配置-创新互联
链接分享:http://6mz.cn/article/codoep.html