• HTTPD解析介绍


    • 配置文件全局介绍
    • 1)主配置文件:/etc/httpd/conf/httpd.conf 
      全局配置:Section 1: Global Environment 第33行
      中心主机配置: Section 2: ‘Main’ server configuration 第246行
      虚拟主机配置:Section 3: Virtual Hosts 第986行

      2)每一次修改配置文件之后,可以使用httpd -t检查配置文件是否错误,一般如果没有给ServerName值的话会报错,那么给一个IP作为ServerName的值
      httpd -t #检查下配置文件的语法是否错误
      3)在全局配置段,可以修改其监听的端口, 修改监听的端口之后,只有重启服务才能生效,reload不能生效,只能restart
      Listen 80 可以改为:Listen 8000


      配置文件详细介绍(超级重要必须掌握)

      • 1:设置监听的端口(很重要)
          在全局配置段,可以修改其监听的端口, 修改监听的端口之后,只有重启服务才能生效,reload不能生效,只能restart
      Listen 80 可以改为:Listen 8000
      • 2:持久连接
          由于web服务的连接是:基于一个TCP的虚连接,http事务可重复执行多次。例如我们打开https://www.taobao.com,首先返回的是首页的HTML骨架资源,再返回的是CSS级联样式表资源,最后返回的是JavaScript代码资源。TCP连接建立后,每个资源获取完成后不全断开连接,而是继续等待其他资源请求的进行

      KeepAlive On 或 Off :设置TCP保持连接关闭或开启
      KeepAliveTimeout 15 :设置保持连接的超时时长
      MaxKeepAliveRequests 100 : 设置最大保持连接数量
      • 3:MPM机制(多处理模块机制)(很重要)
          httpd-2.2不支持同时编译多个MPM模块,所以只能编译选定要使用的那个模块,CentOS 6的rpm包为此专门提供了三个程序文件,httpd(prefork),httpd.worker,httpd.event,分别用于实现对不同的MPM机制的支持。

      当httpd启动时候,可以使用 ps aux | awk '/httpd$/{print $11}' 命令查看当前httpd是以哪一种机制运行的,如果是/usr/sbin/httpd,那么就是以prefork模式运行的,如果是/usr/sbin/httpd.worker,那么就是以worker模式运行的,如果是/usr/sbin/httpd.event,那么就是以event模式运行的。

      使用 httpd -l 命令可以查看编译的核心模块

      使用 httpd -M 查看静态编译及动态编译的模块

      在配置文件中可以配置prefork模式和worker模式的属性信息
      <IfModule prefork.c>
      StartServers 8
      MinSpareServers 5
      MaxSpareServers 20
      ServerLimit 256
      MaxClients 256
      MaxRequestsPerChild 4000
      </IfModule>

      <IfModule worker.c>
      StartServers 4
      MaxClients 300
      MinSpareThreads 25
      MaxSpareThreads 75
      ThreadsPerChild 25
      MaxRequestsPerChild 0
      </IfModule>


      • 4:启用或禁用模块(DSO)(很重要)
      LoadModule <模块名> <模块相对路径>
      例如:LoadModule auth_basic_module modules/mod_auth_basic.so
      这里的auth_basic_module是模块名,modules/mod_auth_basic.so是模块文件的路径,如果模块前面没有路径,表示启用相关模块
      模块的完全路径是:/etc/httpd/modules/*

      • 5:定义中心主机(重要)
      指定DocumentRoot(这是中心主机的站点根目录,中心主机的根站点目录可以更换)
      例如:DocumentRoot "/var/www/html"
      可以修改为其他的路径:DocumentRoot "/app/www"

     

    • :基于用户的访问认证安全机制
    有两种认证的安全机制:
    basic:明文
    digest:消息摘要认证

    1:basic 认证
    1)在Location的访问认证中设置

    基于单个用户进行认证
    <Location /server-info>
    SetHandler server-info
    AuthType Basic
    AuthName "请求输入你的用户名和密码"
    AuthUserFile "/etc/httpd/conf/.htpasswd"
    Require user yhy
    </Location>

    如果让/etc/httpd/conf/.htpasswd中的用户都可以登入,需要修改最后一行指令
    <Location /server-info>
    SetHandler server-info
    AuthType Basic
    AuthName "请求输入你的用户名和密码"
    AuthUserFile "/etc/httpd/conf/.htpasswd"
    # 修改下面这一行指令
    Require valid-user
    </Location>

    2)如何创建虚拟用户文件

    使用命令 htpasswd 进行创建
    例如:htpasswd -m -c /etc/httpd/conf/.htpasswd yhy
    htpasswd的选项说明:
    -c:自动创建指定的用户文件
    -m:MD5格式化加密
    -s:sha格式加密
    -D:删除指定用户

    3)还可以基于用户组进行认证
    基于组认证
    <Location /server-info>
    SetHandler server-info
    AuthType Basic
    AuthName "请求输入你的用户名和密码"
    AuthUserFile "/etc/httpd/conf/.htpasswd"
    AuthGroupFile "/etc/httpd/conf/.htgroup"
    Require group my_group
    </Location>

    创建用户账号
    htpasswd -m -c /etc/httpd/conf/.htpasswd yhy1
    htpasswd -m -c /etc/httpd/conf/.htpasswd yhy2
    htpasswd -m -c /etc/httpd/conf/.htpasswd yhy3

    创建组账号
    编辑/etc/httpd/conf/.htpasswd文件,将创建的用户添加到组里面
    my_group: yhy yhy1 yhy2 yhy3
  • 相关阅读:
    eclipse安装WTP部署WEB项目
    BZOJ3302: [Shoi2005]树的双中心
    BZOJ2059: [Usaco2010 Nov]Buying Feed 购买饲料
    BZOJ1986: [USACO2004 Dec] Dividing the Path 划区灌溉
    BZOJ3126: [Usaco2013 Open]Photo
    51nod1486 大大走格子
    BZOJ1698: [Usaco2007 Feb]Lilypad Pond 荷叶池塘
    BZOJ2590: [Usaco2012 Feb]Cow Coupons
    BZOJ1739: [Usaco2005 mar]Space Elevator 太空电梯
    BZOJ2501: [usaco2010 Oct]Soda Machine
  • 原文地址:https://www.cnblogs.com/liu1026/p/7440985.html
Copyright © 2020-2023  润新知