httpd

 

httpd

  • http服务器程序:

     

    • httpd (apache)
      nginx
      lighttpd
  • httpd的特性:

     

    • 高度模块化: core + modules
      DSO:dynamic shared object(模块的动态加载)
      MPM:Multipath processing Modules (多路处理模块)

       

      • prefork:多进程模型,每个进程响应一个请求;

         

        1. 一个主进程:负责生成子进程及回收子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;
        2. n个子进程:每个子进程处理一个请求;
        3. 工作模型:会预先生成几个空闲进程,随时等待用于响应用户请求;最大空闲和最小空闲;
      • worker:多进程多线程模型,每线程处理一个用户请求;

         

        1. 一个主进程:负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;
        2. 多个子进程:每个子进程负责生成多个线程;
        3. 每个线程:负责响应用户请求;
        4. 并发响应数量:m*n
          m:子进程数量
          n:每个子进程所能创建的最大线程数量;
      • event:事件驱动模型,多进程模型,每个进程响应多个请求;

         

        1. 一个主进程 :负责生成子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;
        2. 子进程:基于事件驱动机制直接响应多个请求;
          httpd-2.2: 仍为测试使用模型;httpd-2.4:event可生产环境中使用;
  • httpd功能特性:
    CGI:Common Gateway Interface(支持动态网站的接口)
    虚拟主机:IP,PORT, FQDN
    反向代理
    负载均衡
    路径别名
    丰富的用户认证机制:basic、digest
    支持第三方模块

  • 安装httpd

    • rpm包:CentOS 发行版中直接提供;
      编译安装:定制新功能,或其它原因;
  • 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(prefork)
      /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 httpd {start|stop|restart|status|configtest|reload}
  • CentOS 7:httpd-2.4

    • 配置文件:
      /etc/httpd/conf/httpd.conf
      /etc/httpd/conf.d/*.conf
      模块相关的配置文件:/etc/httpd/conf.modules.d/*.conf;
      systemd unit file:/usr/lib/systemd/system/httpd.service
    • 主程序文件:
      /usr/sbin/httpd
      httpd-2.4支持MPM的动态切换;
    • 日志文件:
      /var/log/httpd:
      access_log:访问日志
      error_log:错误日志
    • 站点文档:
      /var/www/html
    • 模块文件路径:
      /usr/lib64/httpd/modules
    • 服务控制:
      systemctl enable|disable httpd.service
      systemctl {start|stop|restart|status} httpd.service

httpd配置

  • 配置的实现方式

    • 编辑:/etc/httpd/conf/httpd.conf
    • 在/etc/httpd/conf.d/下配置模块化的文件
  • 主配置文件:/etc/httpd/conf/httpd.conf,配置段的划分

    ### Section 1: Global Environment    全局环境
    ### Section 2: 'Main' server configuration  主服务器配置段
    ### Section 3: Virtual Hosts  虚拟主机配置
    
    主服务器和虚拟服务器不能同时生效;
        httpd-2.2,需要手动关闭一个;
        httpd-2.4,两者之间可自动关闭;
  • 配置格式:

    • directive value

       

      • directive:指令;不区分字符大小写;
        value:指令的值;为路径时,是否区分字符大小写,取决于文件系统;
    • 配置块

      示例:
      
      <Directory />
        AllowOverride none
        Require all denied
      </Directory>
      
      内部指令的生效范围只对此配置块描述的范围有效;
  • 常用配置:

    1. 修改监听的IP和PORT
      Listen [IP-address:]portnumber [protocol]

      • 省略IP表示为0.0.0.0;
      • Listen指令可重复出现多次;
        Listen 80
        Listen 8080
      • 修改监听socket,重启服务进程方可生效;
      • 限制其必须通过ssl通信时,protocol需要定义为https;
    2. 持久连接(保持连接,长连接)
      Persistent Connection:tcp连续建立后,每个资源获取完成后不全断开连接,而是继续等待其它资源请求的进行;

      • 如何使其连接时不至于过长?

        • 数量限制 or 时间限制
          副作用:对并发访问量较大的服务器,长连接机制会使得后续某些请求无法得到正常响应;
          折衷:使用较短的持久连接时长,以及较少的请求数量;

          主配置文件/etc/httpd/conf/httpd.conf中没有相关设置;可以新建一个配置文件,在/etc/httpd/conf.d/
          
          KeepAlive  On|Off  是否使用长连接
          KeepAliveTimeout  15    超时时长
          MaxKeepAliveRequests  100   连接时请求的资源的多少
          
          注意:httpd-2.4的KeepAliveTimeout可以是毫秒级;
            KeepAliveTimeout num[ms]
        • 编辑完文件后,检查文件:httpd -t
      • 测试:
        telnet WEB_SERVER_IP PORT
        GET /URL HTTP/1.1
        Host: WEB_SERVER_IP

        示例:
        telnet 172.16.0.67
        
        GET /index.html HTTP/1.1
        host:172.16.0.67
    3. MPM

      • httpd-2.2,不支持同时编译多个MPM模块,所以只能编译选定要使用的那个;CentOS 6的rpm包为此专门提供了三个应用程序文件,httpd(prefork), httpd.worker, httpd.event,分别用于实现对不同的MPM机制的支持;确认现在使用的是哪下程序文件的方法:ps aux | grep httpd

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

          #HTTPD=/usr/sbin/httpd.worker
          HTTPD=/usr/sbin/httpd.worker
          
          选择启用哪一个模块;
          默认使用的为/usr/sbin/httpd,其为prefork的MPM模块;

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

      • httpd-2.4更换MPM模块;编辑/etc/httpd/conf.modules.d/00-mpm.conf;选择要使用MPM的LoadModule。

      • 查看httpd程序的模块列表:
        查看静态编译的模块:
        ~]# httpd -l
        查看静态编译及动态编译的模块:
        ~]# httpd -M

      • MPM配置:编辑/etc/httpd/conf/httpd.conf

        prefork的配置:    
        
        <IfModule prefork.c>
        StartServers       8
        MinSpareServers    5
        MaxSpareServers   20
        ServerLimit      256
        MaxClients       256
        MaxRequestsPerChild  4000
        </IfModule>
        worker的配置:
        
        <IfModule worker.c>
        StartServers         4
        MaxClients         300
        MinSpareThreads     25
        MaxSpareThreads     75
        ThreadsPerChild     25
        MaxRequestsPerChild  0
        </IfModule>
      • 统计网站浏览量的指标:PV,UV,IP
        PV:Page View
        UV: User View;独立的用户浏览量
        IP:独立的IP浏览量

    4. DSO
      使用httpd -M显示有(shared)的模块都可以使用LoadModule实现动态装载;/etc/httpd/conf.modules.d/*.conf
      配置指定实现模块加载:LoadModule <mod_name> <mod_path>
      模块文件路径可使用相对路径:相对于ServerRoot(默认/etc/httpd)

    5. 定义'Main' server的文档页面路径

      ServerName     此处的名字主要是用来标识主机认为自己是服务于谁的;跟真正的主机名没关机;若没有定义会反解IP地址
              语法格式: ServerName [scheme://]fully-qualified-domain-name[:port]    
      
       DocumentRoot  ""  
           文档路径映射:
               DoucmentRoot指向的路径为URL路径的起始位置;其相当于站点URL的根路径;
               URL PATH与FileSystem PATH不是等同的,而是存在一种映射关系;
               URL /  --> FileSystem /var/www/html/
               /images/logo.jpg --> /var/www/html/images/logo.jpg
    6. 站点访问控制常见机制
      可基于两种机制指明对哪些资源进行何种访问控制

      • 文件系统路径:

        如果是针对于一个目录下的所有资源进行控制:
        
          <Directory  "">    
          ...
          </Directory>
        
        如果是针对于一个文件或一组文件:
        
          <File  "">
          ...
          </File>
        
          <FileMatch  "PATTERN">
          ...
          </FileMatch>
      • URL路径:

        <Location  "">
          ...
          </Location>
        
          <LocationMatch "PATTERN">
          ...
          </LocationMatch>
      • <Directory>中“基于源地址”实现访问控制:

        • 控制页面资源允许、拒绝指定的主机:

          • httpd-2.2:order和allow、deny
            order:定义allow、deny的生效次序;写在后面的表示默认法则;
            Allow from IP|NetAddr | Deny from IP|NetAddr
            NetAddr格式:
            172.16
            172.16.0.0
            172.16.0.0/16
            172.16.0.0/255.255.0.0

          • httpd-2.4:
            基于IP控制:
            Require ip IP地址或网络地址
            Require not ip IP地址或网络地址
            基于主机名控制:
            Require host 主机名或域名
            Require not host 主机名或域名

            要放置于<RequireAll>配置块中或<RequireAny>配置块中;

        • 控制页面资源允许所有来源的主机可访问:

          httpd-2.2
                <Directory "">
                    ...
                    Order allow,deny
                    Allow from all 
                </Directory>
          
            httpd-2.4
                <Directory "">
                    ...
                    Require all granted
                </Directory>
        • 控制页面资源拒绝所有来源的主机可访问:

          httpd-2.2
                <Directory "">
                    ...
                    Order allow,deny
                    Deny from all 
                </Directory>
          
            httpd-2.4
                <Directory "">
                    ...
                    Require all denied
                </Directory>
        • Options:定义特定目录下的资源如何被访问;后跟1个或多个以空白字符分隔的“选项”列表;

          可用选项:
          
          Indexes:允许索引;指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户;取消后,给出路径可以查看,没有路径不支持查看;
          FollowSymLinks:允许跟踪符号链接文件所指向的源文件;
          None:什么都不允许;
          All:除了MultiViews之外的所有选项;
    7. 定义站点主页面:
      DirectoryIndex index.html index.html.var

    8. 定义路径别名
      格式:Alias /URL/ "/PATH/TO/SOMEDIR/"

    9. 设定默认字符集
      AddDefaultCharset UTF-8
      中文字符集:GBK, GB2312, GB18030

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

      • 错误日志:
        配置文件/etc/httpd/conf/httpd.conf中:ErrorLog "logs/error_log"
        日志文件:/etc/httpd/logs/error_log

      • 访问日志:

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

      • 认证质询:
        WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码;
      • 认证:
        Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过时,则服务器发送响应的资源;
        认证方式有两种:
        basic:明文
        digest:消息摘要认证比较老的浏览器不一定适用

      • 安全域:需要用户认证后方能访问的路径;应该通过名称对其进行标识,以便于告知用户认证的原因;

      • 用户的账号和密码存放于何处?
        虚拟账号:仅用于访问某服务时用到的认证标识

        • 文本文件;
          SQL数据库;
          ldap目录存储;
      • basic认证配置示例:

        1. 定义安全域

           

          <Directory "">
           Options None
           AllowOverride None
           AuthType Basic
           AuthName "String“
           AuthUserFile  "/PATH/TO/HTTPD_USER_PASSWD_FILE"
           Require  user  username1  username2 ...
          </Directory>

          允许账号文件中的所有用户登录访问:Require valid-user

        2. 提供账号和密码存储(文本文件)
          使用专用命令完成此类文件的创建及用户管理
          htpasswd [options] /PATH/TO/HTTPD_PASSWD_FILE username
          -c:自动创建此处指定的文件,因此,仅应该在此文件不存在时使用;
          -m:md5格式加密
          -s: sha格式加密
          -D:删除指定用户
          -b:批模式添加用户
          htpasswd -b [options] /PATH/TO/HTTPD_PASSWD_FILE username password

        3. 另外:基于组账号进行认证;

          • 定义安全域

             

            <Directory "">
              Options None
              AllowOverride None
              AuthType Basic
              AuthName "String“
              AuthUserFile  "/PATH/TO/HTTPD_USER_PASSWD_FILE"
              AuthGroupFile "/PATH/TO/HTTPD_GROUP_FILE"
              Require  group  grpname1  grpname2 ...
            </Directory>
          • 创建用户账号和组账号文件;
            组文件:每一行定义一个组
            GRP_NAME: username1 username2 …
    12. 虚拟主机

      • 站点标识: socket

        • IP相同,但端口不同;
          IP不同,但端口均为默认端口;
          FQDN不同;请求报文首部中的Host: www.magedu.com
      • 有三种实现方案:
        基于ip:为每个虚拟主机准备至少一个ip地址;
        基于port:为每个虚拟主机使用至少一个独立的port;
        基于FQDN:为每个虚拟主机使用至少一个FQDN;
        注意(专用于httpd-2.2):一般虚拟机不要与中心主机混用;因此,要使用虚拟主机,得先禁用'main'主机;
        禁用方法:注释中心主机的DocumentRoot指令即可;

      • 虚拟主机的配置方法:三种方案可以混用

        <VirtualHost  IP:PORT>
          ServerName FQDN
          DocumentRoot  ""
        </VirtualHost>

        适用于中心主机的指令同样适用于虚拟主机:

        ServerAlias:虚拟主机的别名;可多次使用;
        ErrorLog:
        CustomLog:
        <Directory "">
        ...
        </Directory>
        Alias
        ...
      • 基于IP的虚拟主机示例:

        <VirtualHost 172.16.100.6:80>
              ServerName www.a.com
              DocumentRoot "/www/a.com/htdocs"
          </VirtualHost>
        
          <VirtualHost 172.16.100.7:80>
              ServerName www.b.net
              DocumentRoot "/www/b.net/htdocs"
          </VirtualHost>
        
          <VirtualHost 172.16.100.8:80>
              ServerName www.c.org
              DocumentRoot "/www/c.org/htdocs"
          </VirtualHost>
      • 基于端口的虚拟主机:

        <VirtualHost 172.16.100.6:80>
              ServerName www.a.com
              DocumentRoot "/www/a.com/htdocs"
          </VirtualHost>
        
          <VirtualHost 172.16.100.6:808>
              ServerName www.b.net
              DocumentRoot "/www/b.net/htdocs"
          </VirtualHost>
        
          <VirtualHost 172.16.100.6:8080>
              ServerName www.c.org
              DocumentRoot "/www/c.org/htdocs"
          </VirtualHost>
      • 基于FQDN的虚拟主机:

        <VirtualHost 172.16.100.6:80>
              ServerName www.a.com
              DocumentRoot "/www/a.com/htdocs"
          </VirtualHost>
        
          <VirtualHost 172.16.100.6:80>
              ServerName www.b.net
              DocumentRoot "/www/b.net/htdocs"
          </VirtualHost>
        
          <VirtualHost 172.16.100.6:80>
              ServerName www.c.org
              DocumentRoot "/www/c.org/htdocs"
          </VirtualHost>

        注意:如果是httpd-2.2,则使用基于FQDN的虚拟主机时,需要事先使用指令:NameVirtualHost IP:PORT

    13. status
      查看是否装载:httpd -M | grep status
      状态路径:/etc/httpd/conf.modules.d/00-base.conf
      装载模块:LoadModule status_module modules/mod_status.so

      httpd-2.2
      
      <Location /server-status>
          SetHandler server-status
          Order allow,deny
          Allow from 172.16
      </Location>
      httpd-2.4
      
      <Location /server-status>
          SetHandler server-status
          <RequireAll>
              Require ip 172.16
          </RequireAll>
      </Location>
    14. curl命令

      • 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 [options…] 
        curl的常用选项:

        • -A/–user-agent 设置用户代理发送给服务器
          –basic 使用HTTP基本认证
          –tcp-nodelay 使用TCP_NODELAY选项
          -e/–referer 来源网址
          –cacert CA证书 (SSL)
          –compressed 要求服务端返回是压缩的格式,仅仅只是传输过程中的压缩,但客户端也可接收压缩格式;
          -H/–header 自定义首部信息传递给服务器
          -I/–head 只显示响应报文首部信息
          –limit-rate 设置传输速度
          -u/–user 设置服务器的用户和密码
          -0/–http1.0 使用HTTP 1.0
      • elinks命令
        elinks [OPTION]… [URL]…
        -dump: 不进入交互式模式,而直接将URL的内容输出至标准输出;

    15. user/group
      指定以哪个用户的身份运行httpd服务进程(子进程或线程);

      /etc/httpd/conf/httpd.conf
      
      User apache
      Group apache

      当某个服务需要使用管理员的身份运行时,可以切换身份:SUexec机制

    16. 使用mod_deflate模块压缩页面优化传输速度

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

        首先确认mod_deflate模块是启用的:~]# httpd -M | grep deflate
        
          设置输出过滤器
          SetOutputFilter DEFLATE  
        
          # mod_deflate configuration
        
          # 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
        
          # 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
    17. https(http over ssl)

      1. 先是TCP的三次握手
      2. ssl协议握手,建立ssl会话
      3. 进行ssl会话
      4. 断开连接,进行tcp的四次挥手;

        • SSL会话的简化过程

          1. 客户端发送可供选择的加密方式,并向服务器请求证书;
          2. 服务器端发送证书以及选定的加密方式给客户端;
          3. 客户端取得证书并进行证书验正:

             

            • 如果信任给其发证书的CA:
              (a) 验正证书来源的合法性;用CA的公钥解密证书上数字签名;
              (b) 验正证书的内容的合法性:完整性验正
              (c) 检查证书的有效期限;
              (d) 检查证书是否被吊销;
              (e) 证书中拥有者的名字,与访问的目标主机要一致;
          4. 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换;
          5. 服务用此密钥加密用户请求的资源,响应给客户端;

          注意:SSL会话是基于IP地址创建;所以单IP的主机上,仅可以使用一个https虚拟主机;

      • 配置httpd支持https:

        (1) 为服务器申请数字证书;
              测试:通过私建CA发证书
                  (a) 创建私有CA
                  (b) 在服务器创建证书签署请求
                  (c) CA签证
        
          (2) 配置httpd支持使用ssl,及使用的证书;
              # yum -y install mod_ssl
              配置文件:/etc/httpd/conf.d/ssl.conf
                  DocumentRoot
                  ServerName
                  SSLCertificateFile
                  SSLCertificateKeyFile
        
          (3) 测试基于https访问相应的主机;
              # openssl  s_client  [-connect host:port] [-cert filename] [-CApath directory] [-CAfile filename]
    18. httpd自带的工具程序

      • htpasswd:basic认证基于文件实现时,用到的账号密码文件生成工具;
      • apachectl:httpd自带的服务控制脚本,支持start和stop;
      • apxs:由httpd-devel包提供,扩展httpd使用第三方模块的工具;
      • rotatelogs:日志滚动工具;在时间、空间上控制

         

        第一轮:access.log  
        第二轮:            access.log, access.1.log
        第三轮:                          access.log, acccess.1.log, access.2.log
      • suexec:访问某些有特殊权限配置的资源时,临时切换至指定用户身份运行;
    19. httpd的压力测试工具
      命令行:ab, webbench, http_load, seige
      图形化:jmeter, loadrunner

      tcpcopy:网易开发,复制生产环境中的真实请求,并将之保存下来;

      ab [OPTIONS] URL
      -n:总请求数;
      -c:模拟的并行数;
      -k:以持久连接模式 测试;

httpd-2.4:

  • 新特性:
    (1) MPM支持运行为DSO机制;以模块形式按需加载;
    (2) event MPM生产环境可用;
    (3) 异步读写机制;
    (4) 支持每模块及每目录的单独日志级别定义;
    (5) 每请求相关的专用配置;
    (6) 增强版的表达式分析式;
    (7) 毫秒级持久连接时长定义;
    (8) 基于FQDN的虚拟主机也不再需要NameVirutalHost指令;
    (9) 新指令,AllowOverrideList;
    (10) 支持用户自定义变量;
    (11) 更低的内存消耗;

  • 新模块:
    (1) mod_proxy_fcgi
    (2) mod_proxy_scgi
    (3) mod_remoteip

  • 安装httpd-2.4
    依赖于apr-1.4+, apr-util-1.4+, [apr-iconv]
    apr: apache portable runtime

    • CentOS 6:

      • 默认:apr-1.3.9, apr-util-1.3.9

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

      • 编译安装步骤:

        (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
        
          自带的服务控制脚本:apachectl
    • CentOS 7:

      • ~]# yum install httpd

      • 配置文件:

        /etc/httpd/conf/httpd.conf
        /etc/httpd/conf.modules.d/*.conf
        /etc/httpd/conf.d/*.conf
      • 配置应用:

        1. 切换使用的MPM

           

          编辑配置文件/etc/httpd/conf.modules.d/00-mpm.conf,启用要启用的MPM相关的LoadModule指令即可。
        2. 基于IP的访问控制

          允许所有主机访问:Require  all  granted
          拒绝所有主机访问:Require  all  deny
          
          控制特定的IP访问:
           Require  ip  IPADDR:授权指定来源的IP访问;
           Require  not  ip  IPADDR:拒绝
          
          控制特定的主机访问:
           Require  host  HOSTNAME:授权指定来源的主机访问;
           Require  not  host  HOSTNAME:拒绝
          
           HOSTNAME:
               FQDN:特定主机
               domin.tld:指定域名下的所有主机
          
          <RequireAll>
           Require all granted
           Require not ip 172.16.100.2
          </RequireAll>
        3. 虚拟主机

          基于FQDN的虚拟主机也不再需要NameVirutalHost指令;
          
          <VirtualHost *:80>
           ServerName www.b.net
           DocumentRoot "/apps/b.net/htdocs"
           <Directory "/apps/b.net/htdocs">
               Options None
               AllowOverride None
               Require all granted
           </Directory>
          </VirtualHost>    
          
          注意:任意目录下的页面只有显式授权才能被访问;
        4. ssl

        5. KeepAliveTimeout #ms
          毫秒级持久连接时长定义;

 

 

原创文章,作者:s,如若转载,请注明出处:http://www.178linux.com/77498

(0)
ss
上一篇 2017-06-04
下一篇 2017-06-04

相关推荐

  • Linux下 文件类型不同颜色的含义

    linux 文件颜色的含义 蓝色代表目录 绿色代表可执行文件 红色表示压缩文件 浅蓝色表示链接文件 灰色表示其他文件 红色闪烁表示链接的文件有问题了 黄色表示设备文件 蓝色文件———-目录 白色文件———-一般性文件,…

    Linux干货 2016-10-18
  • 简单救援模式应用

                                  …

    2017-08-12
  • 学习宣言

    现在,青春是用来奋斗的;将来,青春是用来回忆的。   人生之路,有坦途也有陡坡,有平川也有险滩,有直道也有弯路。青年面临的选择很多,关键是要以正确的世界观、人生观、价值观来指导自己的选择。无数人生成功的事实表明,青年时代,选择吃苦也就选择了收获,选择奉献也就选择了高尚。青年时期多经历一点摔打、挫折、考验,有利于走好一生的路。要历练宠辱不惊…

    Linux干货 2016-12-29
  • find—查找条件

    find—查找条件    目 录 一、根据时间戳查找: 二、根据权限查找 三、根据文件所属人owner,文件所属组group查找 四、根据搜索层级查找 五、根据文件名查找 六、根据文件类型查找    find实时查找工具,通过遍历指定路径完成文件查找 (1)工作特点: 查找速度略慢 精确查找 实时查找 可以只…

    Linux干货 2017-08-13
  • Centos Linux基础入门知识类

    Centos Linux基础入门知识类 •1.1Linux终端介绍 •1.2基本命令的使用:ls、pwd、cd。 •1.3 查看系统和BIOS硬件时间。 •1.4 Linux如何获得帮助,Linux关机命令:shutdow、init等。 •1.5 YUM本地源配置与开机自动挂载光盘 前言: 很多学习Linux的同学或多…

    Linux干货 2017-03-26
  • grub文件文件修复

    首先我们先破坏一下grub文件 这里我们先查看一下电脑是哪块硬盘启动的 这里我们就直接破坏硬盘的二进制数据,以达到grub的破坏。 要记住我们只能破坏前446字节,也就是bootloader。后面64字节是分区表。 我们可以查看一下前512字节的二进制文件 hexdump -C -n 512 /dev/sda 先破坏/boot/grub/stage1的前44…

    2017-07-28