• http2.2配置


    http: 超文本传输协议,工作在应用层

    CentOS 6程序环境:httpd-2.2
      配置文件:
        /etc/httpd/conf/httpd.conf
        /etc/httpd/conf.d/*.conf
      检查配置语法:
        httpd –t
        service httpd configtest

      服务脚本:/etc/rc.d/init.d/httpd
      脚本配置文件:/etc/sysconfig/httpd
      服务控制和启动:
        chkconfig httpd on|off
        service {start|stop|restart|status|configtest|reload} httpd  

      站点网页文档根目录:
        /var/www/html
      模块文件路径:
        /etc/httpd/modules
        /usr/lib64/httpd/modules

      主程序文件: /usr/sbin/httpd /usr/sbin/httpd.worker /usr/sbin/httpd.event

      主进程文件: /etc/httpd/run/httpd.pid

      日志文件目录:

        /var/log/httpd
        access_log: 访问日志
        error_log:错误日志
      帮助文档包:
        httpd-manual

      httpd配置文件的组成:
        grep "Section" /etc/httpd/conf/httpd.conf
          Section 1: Global Environment
          Section 2: 'Main' server configuration
          Section 3: Virtual Hosts
      配置格式:directive value         变量   值
        directive: 不区分字符大小写
        value: 为路径时,是否区分大小写,取决于文件系统

        

    MPM工作模式:

      prefork:多进程I/O模型,每个进程响应一个请求,默认模型

      一个主进程:生成和回收n个子进程,创建套接字,不响应请求

      多个子进程:工作work进程,每个子进程处理一个请求;系统初始时,预先生成多个空闲进程,等待请求,最大不超过1024个

      worker:复用的多进程I/O模型,多进程多线程,IIS使用此模型

      一个主进程:生成m个子进程,每个子进程负责生个n个线程,每个线程响应一个请求,并发响应请求:m*n

      event:事件驱动模型(worker模型的变种)

        一个主进程:生成m个子进程,每个进程直接响应n个请求,并发响应请求:m*n,有专门的线程来管理这些keep-alive类型的线程,当有真实请求时,将请求传递给服务线程,执行完毕后,又允许释放。这样增强了高并发场景下的请求处理能力

    /etc/sysconfig/httpd      MPM    

      HTTPD=/usr/sbin/httpd.worker   取消该项以启用worker模式,查看该模式使用的模块httpd.worker -l

    /etc/httpd/conf/httpd.conf

      ServerTokens prod       返回版本信息,prod仅显示apache,是显示最少信息的选项。

      Lister  80         默认监听本机所有IP地址,可以修改为某个IP的某个端口,可以指定监听多个IP端口  

      KeepAlive on|off      长连接开关,

      KeepAliveTimeout 15             长连接关闭时间,以秒为单位,httpd2.4支持毫秒,副作用:对并发访问量较大的服务器,持久连接功能会使有些请求得不到相应,处理方式是减短持久连接时间  

    <IfModule prefork.c>   httpd默认模式的模块配置,httpd -l查看使用的模块
    StartServers 8      初始子进程
    MinSpareServers 5      空闲时最小子进程
    MaxSpareServers 20        空闲时最大子进程
    ServerLimit 256      服务器最高连接数
    MaxClients 256      客户端最高连接数      应该与服务器连接数相等
    MaxRequestsPerChild 4000    服务器进程服务的最大请求数,达到数量后终止进程,释放内存

    <IfModule worker.c>    httpd.worker模式的模块配置,httpd.work -l 可以查看使用哪些模块
    StartServers 4        初始子进程
    MaxClients 300      支持的并发客户访问最大数量
    MinSpareThreads 25   最小的空闲线程
    MaxSpareThreads 75     最大的空闲线程
    ThreadsPerChild 25     每个子进程线程数
    MaxRequestsPerChild 0    服务器进程服务的最大请求数,达到数量后终止进程,重新打开新进程,0永远不释放

    httpd -M 查看动态加载模块

      User apache      启动服务的用户
      Group apache    启动服务的组

    DocumentRoot "/var/www/html"    修改服务路径,网页的存储位置

     

      <Directory "/var/www/html">             

        设置文件夹属性,如果要下面的属性生效需要重命名welcome.conf,以使它失效,否则会自动转到noindex.html,无法显示文件列表

      1、Options Indexes FollowSymLinks       

           Options:后跟1个或多个以空白字符分隔的选项列表

        在选项前的+,- 表示增加或删除指定选项

       常见选项:   

        Indexes:指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户

        FollowSymLinks:允许访问符号链接文件所指向的源文件 

        None:全部禁用

        All: 全部允许

           2、 AllowOverride

            与访问控制相关的哪些指令可以放在指定目录下的.htaccess(由AccessFileName指定)文件中,覆盖之前的配置指令,该文件路径为访问数据路径下,默认为/var/www/html/下,和.html文件位置一致,需要手工创建

        只对<directory>语句有效        下列语句需要写在/etc/httpd/conf/httpd.conf/里相关的<directory>下以定义AllowOverride语句的生效范围

        AllowOverride All: .htaccess 中所有指令都有效

        AllowOverride None:.htaccess 文件无效

        AllowOverride AuthConfig Indexes 除了AuthConfig和Indexes的其它指令都无法覆盖

        3、order和allow、deny     ip访问控制

          放在directory, .htaccess中

          order:定义生效次序;写在后面的表示默认法则,如果冲突,排后面的生效

            Order allow,deny     默认没有记入白名单的都不准访问,下面要跟上允许访问的白名单,否则任何地址无法访问

            allow from  192.168.1.100

            Order deny,allow  默认没有记入黑名单的都可以访问,下面要跟上黑名单,否则任何地址都可以访问

          deny from 192.168.1.189

        例:      

    <Files ~ "*.txt$">
    Order allow,deny
    Deny from all
    allow from 192.168.1.100,10.10.0.0

    </Files>

     

    日志设定

      日志类型:

          访问日志
          错误日志

          错误日志:

            ErrorLog logs/error_log

            LogLevel warn     可选值: debug, info, notice, warn,error,crit, alert, emerg

          访问日志:

    LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined     定义日志格式
    LogFormat "%h %l %u %t "%r" %>s %b" common                   
    LogFormat "%{Referer}i -> %U" referer                                           
    LogFormat "%{User-agent}i" agent

         CustomLog logs/access_log combined    选择启用的日志格式combined,common,referer,agent

        帮助文档:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

          %h 客户端IP地址

          %l 远程用户,启用mod_ident才有效,通常为减号“-”

          %u 验证(basic,digest)远程用户,非登录访问时,为一个减号“-”

          %t 服务器收到请求时的时间

          %r First line of request,即表示请求报文的首行;记录了此次请求的“方法”,“URL”以及协议版本

          %>s 响应状态码

          %b 响应报文的大小,单位是字节;不包括响应报文http首部

          %{Referer}i 请求报文中首部“referer”的值;即从哪个页面中的超链接跳转至当前页面的

          %{User-Agent}i 请求报文中首部“User-Agent”的值;即发出请求的应用程序 

    默认字符集

      AddDefaultCharset UTF-8    建议UTF-8,全球语言都可以支持,避免乱码

    定义路径别名

      alias  /download/    /data/bbs/    别名自己定义,路径根据需要设置,可以放置在本配置文件任意位置

      aliasmatch ^/imgs/(.*)?$    "/data/images/pic$1"   支持扩展正则表达式    

      aliasmatch ^(.*.(jpe?g|gif|png))$  "/data/images/$1"  

    基于用户的访问控制

      认证方式两种:

        basic:明文

        digest:消息摘要认证,兼容性差

      定义安全域     一般创建在/etc/httpd/conf.d/下,

        <directory  "/app/website/secret/">     对某个文件夹进行限制

        AuthType Basic         选择认证方式

        AuthName "String“         提示

        AuthUserFile   "/etc/httpd/conf.d/.httpusers"      指定用户和密码的存放文件

        require user  http1 http2    指定可以访问的用户,require  valid-user为文件内所有用户皆可登陆

        </directory>

      提供账号和密码存储(文本文件)

        使用专用命令完成此类文件的创建及用户管理

         htpasswd  [options]   /etc/httpd/conf.d/.httpdusers   username      目录要和AuthUserFile一致

         -c:自动创建文件,仅第一次创建时使用,再次使用会覆盖

        -p:明文密码

        -d:CRYPT格式加密,默认

        -m:MD5格式加密

        -s:sha格式加密

        -D:删除指定用户

     基于组账号进行认证             基于用户认证,需要用到用户账号密码文件

       定义安全域  

           一般创建在/etc/httpd/conf.d/下,

        <directory  "/app/website/secret/">         对某个文件夹进行限制

        AuthType Basic         选择认证方式

        AuthName "String“         提示

        AuthUserFile   "/etc/httpd/conf.d/.httpusers"      指定用户和密码的存放文件,文件位置自己选择

        AuthGroupFile    "/etc/httpd/conf.d/.httpdgroups"   指定用户属于的组,文件位置自己选择

        require   group  admin  

        </directory>

       创建用户账号和组账号文件

        vim /etc/httpd/conf.d/.httpdgroups

        admin:  http1  http2

           users:  http3  http4

    远程客户端和用户验证的控制

      Satisfy ALL|Any

        ALL 客户机IP和用户验证都需要通过才可以

        Any客户机IP和用户验证,有一个满足即可

      示例:

        Require valid-user

        Order allow,deny

        Allow from 192.168.1

        Satisfy Any

    实现用户家目录的http共享

      基于模块mod_userdir.so实现

      <IfModule mod_userdir.c> 

      #  UserDir disabled             将此行注释

      UserDir  publicweb              该目录在用户家目录下,比如~wang/publicweb,并没有定义哪些用户的家目录,所以只要用户有这个目录,都可以申请访问,但是要有权限

      </IfModule>

      此时httpd的进程是apache运行的,apache没有其他家目录的访问权限

      setfacl -m u:apache:x /home/wang/       为apache添加进入wang的家目录的权限

     

    ServerSignature On | Off | EMail

      当客户请求的网页并不存在时,服务器将产生错误文档,缺省情况下由于打开了 ServerSignature选项,错误文档的最后一行将包含服务器的名字、Apache的版本等信息如果不对外显示这些信息,就可以将这个参数设置为Off设置为Email,将显示ServerAdmin 的Email提示

     

    status页面

      LoadModule status_module modules/mod_status.so     依赖的模块

      <Location /server-status>       访问该页面时自动显示网站状态信息,该文件名自定义,访问自动跳转

      SetHandler server-status     关键字,不可更改

      Order allow,deny               权限控制

      Allow from 172.16      仅允许172.16网段访问

      </Location>

      ExtendedStatus On     显示更详细的扩展信息

    虚拟主机

       站点标识: socket

        IP相同,但端口不同

        IP不同,但端口均为默认端口

        FQDN不同:

          请求报文中首部

          Host: www.magedu.com

      有三种实现方案:

        基于ip:为每个虚拟主机准备至少一个ip地址  

        基于port:为每个虚拟主机使用至少一个独立的port

        基于FQDN:为每个虚拟主机使用至少一个FQDN

    注意:一般虚拟机不要与main主机混用;因此,要使用虚拟主机,一般先禁用main主机

      禁用方法:注释中心主机的DocumentRoot指令即可  /etc/httpd/conf/httpd.conf

      虚拟主机的配置方法:    一般将配置文件建在/etc/httpd/conf.d/下

      vim /etc/httpd/conf.d/vhosts.conf

        根据IP配置

          <VirtualHost 192.168.1.101>     不同的虚拟主机需要定义不同的IP地址

          DocumentRoot “/app/website1"        网站文件路径

          Errorlog logs/website1-error_log    路径/var/log/httpd/,为每个网站定义单独的错误日志

          Customlog  logs/website1-access_log common    路径/var/log/httpd/,定义单独的日志,common为定义的日志模式

          </VirtualHost>

        根据端口

          <VirtualHost 192.168.1.101:90>      

          DocumentRoot “/app/website2" 

          Errorlog logs/website2-error_log 

          Errorlog logs/website2-error_log

          Customlog  logs/website1-access_log common

          </VirtualHost>

          listen 90          监听90端口,根据端口来区分主机,需要在配置文件下加上此行

        基于FQDN:为每个主机定义不同的FQDN

          namevirtualhost  *:80                  此项可以在主配置文件打开,或者在本文件中添加,2.4版本不需要

        <VirtualHost *:80>     

          DocumentRoot “/app/website2" 

          servername www.linux123.tech    域名需要注册

          serveralias   www.aa.com  www.aaa.com   需要域名支持

          Errorlog logs/website2-error_log 

          Errorlog logs/website2-error_log

          Customlog  logs/website1-access_log common

          </VirtualHost>  

          当通过IP访问网站,默认是放在第一位的网站回应,这个发生在使用FQDN区分的主机里

     

     

    /etc/httpd/conf.d/welcome.conf     

    ErrorDocument 403 /error/noindex.html    在没有页面显示时,显示noindex.html,重命名welcome.conf,不再显示该页面,因为会透露版本信息

    /etc/httpd/conf/httpd.conf    

      DirectoryIndex index.html index.html.var   默认系统会在主站点找这两个文件,找到了就显示,找不到就显示noindex.html,如果修改了welcom.conf,则显示下图

     

     

    ab命令 测试并发连接

    ab -c 2000  -n 10000  http://192.168.1.101/test.txt   

    并发2000个连接,一共发送10000个,地址.....

     

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

     

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

     适用场景:  

      (1) 节约带宽,额外消耗CPU;同时,可能有些较老浏览器不支持

       (2) 压缩适于压缩的资源,例如文本文件

       主配置文件/etc/httpd/conf/httpd.conf

        LoadModule deflate_module modules/mod_deflate.so 

        SetOutputFilter DEFLATE                     在需要压缩的网站下设置

        支持的格式

        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     默认压缩级别9

        示例:

            <VirtualHost *:80>     

          DocumentRoot “/app/website2" 

          servername www.linux123.tech    域名需要注册

          serveralias   www.aa.com  www.aaa.com   需要域名支持

          Errorlog logs/website2-error_log 

          Errorlog logs/website2-error_log

          Customlog  logs/website1-access_log common

          SetOutputFilter DEFLATE                    

          AddOutputFilterByType DEFLATE text/plain 

          AddOutputFilterByType DEFLATE text/html

          AddOutputFilterByType DEFLATE application/xhtml+xml

          AddOutputFilterByType DEFLATE text/xml

          AddOutputFilterByType DEFLATE application/xml

          </VirtualHost>  

    http加密https

      安装加密模块

        yum install mod_ssl

      会自动生成一个配置文件/etc/httpd/conf.d/ssl.conf

      重启服务后生效

      加密只支持一个服务器,不支持多虚拟主机

       vim /etc/httpd/conf.d/ssl.conf

      ServerName www.Linux123.tech:443                    加密的网站name  

      SSLEngine on                 加密引擎启用

      SSLCertificateFile /etc/pki/tls/certs/localhost.crt         CA颁发的证书文件

      SSLCertificateKeyFile /etc/pki/tls/private/localhost.key           web私钥key路径

      SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt               CA的证书文件

      http 重定向https 

        vim /etc/httpd/conf.d/test.conf         新建conf文件

        redirect temp  /  https://www.baidu.com     临时跳转,当访问网页根目录时,跳转到百度

        redirect permanent / https://www.baidu.com   永久重定向

    HSTS:HTTP Strict Transport Security

      HSTS跳转:设置后浏览器内部会自动跳转https协议

        通过模块rewrite_module 实现

        修改/etc/httpd/conf/httpd.conf

        或者在/etc/httpd/conf.d/下新建子配置文件

        vim  /etc/httpd/conf.d/rewrite.conf

        Header always set Strict-Transport-Security "max-age=31536000"    单位秒,持续时间

        RewriteEngine on

        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]      302临时转发,301永久转发 ,HTTPD_HOST代表访问头部地址 

    http2.4差异

      无明确授权的目录,默认拒绝

      设置站点文件夹时,需要明确授权,并且语法有差异

      documentroot "/app/website"

      <directory /app/website>

        Require all granted    

      </directory>

      拒绝所有主机访问:Require all denied

      允许所有主机访问:Require all granted

      控制特定的IP访问:

        Require ip IPADDR:授权指定来源的IP访问

        Require not ip IPADDR:拒绝特定的IP访问

      <directory /app/website>

      <RequireAll> 

      Require all granted

      Require not ip 172.16.1.1     拒绝特定IP   需要加入<RequireALL>

      </RequireAll>

      </directory>

      <RequireAny>
      Require all denied
      require ip 172.16.1.1      允许特定IP ,格式同上,上下需要<directory>和文件夹路径
      </RequireAny>

      控制特定的主机访问:

        Require host HOSTNAME:授权特定主机访问

        Require not host HOSTNAME:拒绝

        HOSTNAME:

          FQDN:特定主机

          domin.tld:指定域名下的所有主机

  • 相关阅读:
    mysql将视图数据迁移到表中
    一、Vant示例文件
    一、VS安装GitHub插件
    二、.net 特性之二
    .net Core jwt策略参数
    一、
    一、.Net Core 3.1 全局序列化
    前端项目
    python 小脚本升级-- 钉钉群聊天机器人
    java 接口测试,使用excel做数据驱动(二)
  • 原文地址:https://www.cnblogs.com/tony3154/p/10272266.html
Copyright © 2020-2023  润新知