zoukankan      html  css  js  c++  java
  • HTTP Service 中篇

    5、httpd 常见配置

    5.1 显示服务器版本信息

    [root@node-128 bin]# curl -I http://192.168.139.128
    HTTP/1.1 200 OK
    Date: Sun, 08 Dec 2019 10:04:44 GMT
    Server: Apache/2.4.41 (Unix)
    Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
    ETag: "2d-432a5e4a73a80"
    Accept-Ranges: bytes
    Content-Length: 45
    Content-Type: text/html

    详细配置项:http://httpd.apache.org/docs/2.4/mod/core.html#servertokens

     创建子目录单独让其生效

    [root@node-128 conf]# pwd
    /app/httpd24/conf
    [root@node-128 conf]# vim httpd.conf
    添加一行:使其生效
    Include conf/conf.d/*.conf
    [root@node-128 conf]# mkdir conf.d
    [root@node-128 conf]# ls
    conf.d  extra  httpd.conf  httpd.conf.bak  magic  mime.types  original
    [root@node-128 conf.d]# vim test.conf
    添加
    servertokens prod
    [root@node-128 conf.d]# systemctl reload httpd
    [root@node-128 conf.d]# curl -I http://192.168.139.128
    HTTP/1.1 200 OK
    Date: Sun, 08 Dec 2019 10:31:51 GMT
    Server: Apache
    Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
    ETag: "2d-432a5e4a73a80"
    Accept-Ranges: bytes
    Content-Length: 45
    Content-Type: text/html

    5.2  监听的IP和Port

    做法思路和前一个基本相似,这里不作详细说明了

    Listen [IP:]PORT

    说明:

    (1) 省略IP表示为本机所有IP
    (2) Listen指令至少一个,可重复出现多次

    范例:

    Listen 192.168.1.100:8080
    Lsten 80

    5.3 持久连接

    Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完
    成,默认关闭持久连接
    断开条件:时间限制:以秒为单位, 默认5s,httpd-2.4 支持毫秒级
    副作用:对并发访问量大的服务器,持久连接会使有些请求得不到响应
    折衷:使用较短的持久连接时间
    持久连接相关指令:

    KeepAlive On|Off
    KeepAliveTimeout 15 #连接持续15s,可以以ms为单位,默认值为5s
    MaxKeepAliveRequests 500 #持久连接最大接收的请求数,默认值100

    测试方法:

    telnet WEB_SERVER_IP PORT
    GET /URL HTTP/1.1
    Host: WEB_SERVER_IP

    5.4 DSO (Dynamic Shared Object)

    Dynamic Shared Object,加载动态模块配置,不需重启即生效
    动态模块所在路径: /usr/lib64/httpd/modules/
    主配置 /etc/httpd/conf/httpd.conf 文件中指定加载模块配置文件

    ServerRoot "/etc/httpd"
    Include conf.modules.d/*.conf

    配置指定实现模块加载格式:

    LoadModule <mod_name> <mod_path>
    [root@node-128 httpd24]# cd conf/
    [root@node-128 conf]# ls
    conf.d extra httpd.conf httpd.conf.bak magic mime.types original
    [root@node-128 conf]# vim httpd.conf
    Example:
    # LoadModule foo_module modules/mod_foo.so
    #
    #LoadModule mpm_event_module modules/mod_mpm_event.so
    LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

    查看已加载的模块

    httpd -M
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::d386:496:dd09:2c09%ens33. 
    Set the
    'ServerName' directive globally to suppress this message Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_prefork_module (shared) authn_file_module (shared) authn_core_module (shared) authz_host_module (shared) authz_groupfile_module (shared) authz_user_module (shared) authz_core_module (shared) access_compat_module (shared) auth_basic_module (shared) reqtimeout_module (shared) -----------------------------------------省略---------------------------------------------

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

    5.5 MPM (Multi-Processing Module) 多路处理模块

     httpd 支持三种MPM工作模式:prefork, worker, event

    centos7编译默认使用的工作模式
    [root@node-128 extra]# httpd -M |grep mpm
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::d386:496:dd09:2c09%ens33. 
    Set the
    'ServerName' directive globally to suppress this message mpm_prefork_module (shared)

    切换MPM模式

    [root@node-128 conf]# ls
    conf.d  extra  httpd.conf  httpd.conf.bak  magic  mime.types  original
    修改配置文件:
    [root@node-128 conf]# vim httpd.conf
    #LoadModule mpm_event_module modules/mod_mpm_event.so
    #LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
    LoadModule mpm_worker_module modules/mod_mpm_worker.so
    LoadModule authn_file_module modules/mod_authn_file.so
    #LoadModule authn_dbm_module modules/mod_authn_dbm.so
    [root@node-128 conf]# httpd -M |grep mpm
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::d386:496:dd09:2c09%ens33. Set the 'ServerName' directive globally to suppress this message
     mpm_worker_module (shared)

    5.6 prefork 模式相关的配置:(event、worker模式类似)

    [root@node-128 conf]# ls
    conf.d  extra  httpd.conf  httpd.conf.bak  magic  mime.types  original
    [root@node-128 conf]# cd extra/
    [root@node-128 extra]# ls
    httpd-autoindex.conf  httpd-languages.conf           httpd-ssl.conf
    httpd-dav.conf        httpd-manual.conf              httpd-userdir.conf
    httpd-default.conf    httpd-mpm.conf                 httpd-vhosts.conf
    httpd-info.conf       httpd-multilang-errordoc.conf  proxy-html.conf
    [root@node-128 extra]# vim httpd-mpm.conf
    # prefork MPM
    # StartServers: number of server processes to start
    # MinSpareServers: minimum number of server processes which are kept spare
    # MaxSpareServers: maximum number of server processes which are kept spare
    # MaxRequestWorkers: maximum number of server processes allowed to start
    # MaxConnectionsPerChild: maximum number of connections a server process serves
    #                         before terminating
    <IfModule mpm_prefork_module>
        StartServers             5
        MinSpareServers          5
        MaxSpareServers         10  
        MaxRequestWorkers      250               #最大的并发连接数
        MaxConnectionsPerChild   0               #子进程最多能处理的请求数量。在处理
    </IfModule>
    
    # worker MPM
    # StartServers: initial number of server processes to start
    # MinSpareThreads: minimum number of worker threads which are kept spare
    # MaxSpareThreads: maximum number of worker threads which are kept spare
    # ThreadsPerChild: constant number of worker threads in each server process
    # MaxRequestWorkers: maximum number of worker threads
    # MaxConnectionsPerChild: maximum number of connections a server process serves
    #                         before terminating
    <IfModule mpm_worker_module>
        StartServers             3
        MinSpareThreads         75
        MaxSpareThreads        250
        ThreadsPerChild         25
        MaxRequestWorkers      400
        MaxConnectionsPerChild   0

    设置访问路径权限的几个要素:

    1、DocumentRoot:网站访问指定文档的真实路径

    2、<Directory directory-path> ... </Directory>:封装网页默认读取的目录,类似的还有基于文件、文件通配符、正则表达式、URL路径

    3、DirectoryIndex : 后面那个文件在前优先读取,如果前面不存在则读取后面文件

    4、各种控制指令:Options、AllowOverride指令等等

    5.7 定义Main server的文档页面路径

    [root@node-128 www]# echo '/data/www/index.html' > /data/www/index.html
    [root@node-128 www]# vim /app/httpd24/conf/httpd.conf
    改变这两行:
    DocumentRoot "/data/www"
    <Directory "/data/www">

    说明:
    DocumentRoot指向的路径为URL路径的起始位置
    /path 必须显式授权后才可以访问

    5.8 定义站点主页面

    DirectoryIndex index.php index.html

    5.9 可实现访问控制的资源

    可以针对文件系统和URI的资源进行访问控制
    文件系统路径:

    #基于目录
    <Directory “/path">
    ...
    </Directory>
    #基于文件
    <File “/path/file”>
    ...
    </File>
    #基于正则表达式
    <FileMatch “regex”>
    ...
    </FileMatch>

    URL路径:

    <Location "URL">
    ...
    </Location>
    <LocationMatch "regex">
    ...
    </LocationMatch>

    5.10 针对目录实现访问控制

    后跟1个或多个以空白字符分隔的选项列表, 在选项前的+,- 表示增加或删除指定选项
    常见选项:
    Indexes:指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户
    FollowSymLinks:允许访问符号链接文件所指向的源文件
    None:全部禁用
    All: 全部允许

    范例:

    <Directory /web/docs>
    Options Indexes FollowSymLinks
    </Directory>
    <Directory /web/docs/spec>
    Options FollowSymLinks
    </Directory>
  • 相关阅读:
    winform+c#之窗体之间的传值 Virus
    ASP.NET 2.0 利用 checkbox获得选中行的行号, 在footer中显示 Virus
    .NET中的winform的listview控件 Virus
    我的书橱
    Expert .NET 2.0 IL Assembler·译者序一 写在一稿完成之即
    Verbal Description of Custom Attribute Value
    AddressOfCallBacks in TLS
    下一阶段Schedule
    2008 Oct MVP OpenDay 第二天 博客园聚会
    2008 Oct MVP OpenDay 第二天 颁奖·讲座·晚会
  • 原文地址:https://www.cnblogs.com/lummg-DAY/p/12006498.html
Copyright © 2011-2022 走看看