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

相关推荐

  • N26-第五周博客作业

    一、显示当前系统上root、fedora或user1用户的默认shell; [root@promote home]# grep -E ‘^(root|fedora|user1)’ /etc/passwd |cut -d : -f7 /bin/bash /bin/bash /bin/bash [root@promote home]# 注…

    Linux干货 2017-05-15
  • 如何在linux系统上获取命令的帮助信息,man文档的章节划分

    内置命令获取帮助文档的方式:   判断一个命令是否是Linux内置的,可以用type命令,只有Linux的内置命令才能使用 help 命令获得帮助。 type cd 输出:cd is a shell builtin 说明这个命令是系统自带的内置命令,那么就可以使用 help命令来获取帮助。 help 命令名 外部命令获取帮助文档的方式: 第一种办法是使用 &…

    Linux干货 2016-10-31
  • 关于大型网站技术演进的思考(十四)–网站静态化处理—前后端分离—上(6)

    原文出处: 夏天的森林   前文讲到了CSI技术,这就说明网站静态化技术的讲述已经推进到了浏览器端了即真正到了web前端的范畴了,而时下web前端技术的前沿之一就是前后端 分离技术了,那么在这里网站静态化技术和前后端分离技术产生了交集,所以今天我将讨论下前后端分离技术,前后端分离技术讨论完后,下一篇文章我将会以网站 静态化技术的…

    Linux干货 2015-03-03
  • 搭建博客程序wordpress

    根据需求安装相关软件,搭建实验环境: #CentOS 6:Httpd,PHP,mysql-server,php-mysql #CentOS 7:Httpd,php,php-mysql mariadb-server 下载wordpress程序,并解压至/var/www/html/目录下 [root@centos077 html]# pwd /var/www/h…

    2017-04-28
  • 逻辑卷的创建、维护和迁移

    逻辑卷管理器(LVM)介绍: 1、允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小 2、允许在多个物理设备间重新组织文件系统 (1)将设备指定为物理卷 (2)用一个或者多个物理卷来创建一个卷组 (3)物理卷是用固定大小的物理区域(Physical Extent,PE)来 定义的 (4)在物理卷上创建的逻辑卷 是由物理区域(PE)组成 (5)可以在逻辑…

    Linux干货 2017-12-10
  • redis 主从复制实战

    1.准备好4台机器 192.168.42.150 redis-node1 #主 192.168.42.151 redis-node2 #从 192.168.42.152 redis-node3 #从 192.168.42.153 redis-node4 #从 将主机解析写入hosts文件,分发至每台机器 2.安装redis,配置好基本配置 (1) 4台机器,…

    Linux干货 2017-07-18