http服务器程序:

      httpd(apache)

      nginx

      lighttpd

     

      应用程序服务器:

           IIS: .net

           tomcat:.jsp

      可访问网址:www.netcraft.com

      httpd的安装和使用:

           ASF:apache software foundation

                 httpd:apache

                       a patchy server =apache

httpd的特性:

      高度模块化:core + modules

      DSO:dynamic shared object

      MPM:Multipath processing Modules(多路处理模块)

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

一个主进程:负责生成子进程及回收子进程;负责创建套接字;负责接收请求,并将其派发给某子进程进行处理;

                 N个子进程:每个子进程处理一个请求;

                 工作模型:会预先生成几个空闲进程,随时等待用于响应用户请求;最大空闲和最小空闲;

           Worker:多进程多线程模型,每线程处理一个用户请求;

一个主进程:负责生成子进程;负责创建套接字;负责接受请求,并将其派发给某子进程进行处理;

                 多个子进程:每个子进程负责生成多个线程;

                 每个线程:负责响应用户请求;

                 并发响应数量:m*n

                      m:子进程数量

                      n:每个子进程所能创建的最大线程数量;

           event:时间驱动模型,多进程模型,每个进程响应多个请求;

一个主进程:负责生成子进程;负责创建套接字;负责接受请求,并将其派发给某子进程进行处理;

                 子进程:基于时间驱动机制直接响应多个请求;

httpd的程序版本;http://httpd.apache.org/

      httpd 1.3:官方已经停止维护;

      httpd 2.0

      httpd 2.2:一本centos6上httpd预装版本;

      httpd 2.4:目前最新稳定版;

httpd的功能特性:

      CGI:common gateway interface

      虚拟主机:IP,PORT,FQDN

      反向代理

      负载均衡

      路径别名

      丰富的用户认证机制

           basic

           digest

      支持第三方模块

      ……

安装httpd:

      Rpm包:centos发行版中直接提供;

      编译安装:定制新功能,或其他原因;

Centos6:httpd2.2

程序环境:

      配置文件:

           /etc/httpd/conf/httpd.conf

           5498f0b6077cc4860a78cea1634de8e8.png-wh_

           /etc/httpd/conf.d/*.conf

          241b6df3e5b487a8ce729e18c38d002c.png-wh_

      服务脚本:

           /etc/rc.d/init.d/httpd

      主程序文件:

           /usr/sbin/httpd

           /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  {start|stop|restart|status|configtest|reload}httpd

centos7:httpd2.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-2.2的常用配置

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

           ### Section 1:Global Encronment(全局环境变量)

           ### Section 2:“Main”server configuration 

           ### Section 3:Virtual Hosts;

      配置格式:

           directive value

                 directive:不区分字符大小写;

                 value:为路径时,是否区分大小写,取决于文件系统;

  常用配置:

1.     修改监听的IP和PORT;

Listen[IP:]PORT

1)    省略IP表示为0.0.0.0;

2)    Listen指令可重复出现多次;

Listen 80

Listen 8080

3)    修改监听socket,重启服务进程方可生效;

9fc8b53a5a7d408c753211a98b2fcb30.png-wh_

2.     持久连续

PersistentConnection:tcp连续建立后,每个资源获取完成后不全断开连接,而是继续等待其它的资源请求的进行;

  如何断开?

        数量限制;

        时间限制

 

        副作用:对并发访问量较大的服务器,长连接机制会使得后续某些请求无法得到正常的响应;

        折中:使用较短的持久连接时长,以及较少的请求数量;

  KeepAlive On|Off

  KeepAliveTimeout    15

  MaxKeepAliveRequests    100

  06fd23bbd46a4ff27267857700583878.png-wh_

测试:

  telnet WEB_SERVER_IP  PORT

  GET /URL  HTTP/1.1

  Host:WEB_SERVER_IP

  e7cced8514f1ab075adb2ead10c6989e.png-wh_

  Note:15s不请求将会自动退出;

3.     MPM

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

  ps aux | grep httpd

  86ca731eff836c8833e7be1071194dec.png-wh_

  可以看出现在使用的是prefork文件。

默认使用的为/usr/sbin/httpd,其为prefork的MPM模块;

  查看httpd程序的模块列表:

        查看静态编译的模块:

              #httpd –l

              7c66ba7f0e7e7f3644472a52257a24aa.png-wh_

        持卡看静态编译及动态编译的模块:

              #httpd –M

              e21d9a6d5387c5965f9b3e30c2b1001c.png-wh_

更换使用httpd程序,以支持其他的MPM机制:

  /etc/sysconfig/httpd

        HTTPD=/usr/sbin/httpd.{worker,event}

  e02181dda85a466a19ab15108ec47590.png-wh_

  编辑图中红框部分,将#删掉,保存退出重启服务,进程使用了httpd.worker文件;

  5b6194d612114a48704e65f542cde42b.png-wh_

Note:必须重启服务,配置才能生效;

 

MPM配置:

  prefork的配置:

        5e163ed8aac5979536c46ad675b21e59.png-wh_

        <IfModule prefork.c>

StartServers       8      服务启动后默认开启的进程数;

MinSpareServers    5     最小空闲服务器进程,保存备用;

MaxSpareServers   20    最大空闲服务器进程,保存备用;

ServerLimit      256           最大活动进程数,一般此项会大于并发数;

MaxClients       256         最大并发数,最大数量的工作线程;

MaxRequestsPerChild  4000 每个子进程在生命周期内所能够服务的最大请求个数;

</IfModule>

           Worker的配置:

                 6e4574fc07f53406f7cdc18e75193732.png-wh_

                 <IfModule worker.c>

StartServers         4        服务启动后默认开启的进程数;

MaxClients         300      最大并发数,最大数量的工作线程;

MinSpareThreads     25     最小空闲进程,保存备用;

MaxSpareThreads     75    最大空闲进程,保存备用;

ThreadsPerChild     25 每个进程可生产的线程数;

MaxRequestsPerChild  0 每个子进程在生命周期内所能够服务的最大请求个数,0代表不限制;

</IfModule>

4.     DSO

配置指定实现模块加载;

  LoadModule <mod_name> <mod_path>

  b9c32e6e29522bd3e8fae52d73bbcc10.png-wh_

  模块文件路径可使用相对路径:

        相对于ServerRoot(默认/etc/httpd)

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

DocumentRoot  “”

文档路径映射:

  DocumentRoot指向的路径为URL路径的起始位置

        其相当于站点URL的根路径;

              (FileSystem)/web/host1/index.html  -->(URL)/index.html

  0dda17822b77e7f26cc11d4230ecdd32.png-wh_

我们可以自定义网页文件站点,并不一定把网页文件放在/var/www/html目录下;

1)    修改配置文件,把下图中路径都改为现在定义的路径;

4fc02b3ff747a2e9058b5085bdc7dabd.png-wh_

2)    创建相关文件及目录;

699f3233f93f59172f5cf891890bbe19.png-wh_

3)    重新加载配置文件,测试;

     e960eac25a8166d29f070bf62a4aa87e.png-wh_

6.     站点访问控制常见机制;

可基于两种机制指明对哪些资源进行何种访问控制;

  文件系统路径:

        <Directory  "">

        ...

        </Directory>

       

        <File "">

        ...

        </File>

       

        <FileMatch  "PATTERN">

        ...

        </FileMatch>

  URL路径:

        <Location  "">

        ...

        </Location>

       

        <LocationMatch "">

        ...

        </LocationMatch>

<Directory>中“基于源地址”实现访问控制;

1)    Options

后跟1个或多个以空白字符分隔的“选项”列表;

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

         FollowSymLinks:允许跟踪符号链接文件所指向的源文件;

         None

         All

2)    AllowOverride

与访问控制相关的哪些指令可以放在.htaccess文件(每个目录下都可以有一个)中;

   All

   None

3)    order和allow、deny

order:定义生效次序;写在后面的表示默认法则;

         order allow,deny(设置白名单)

         order deny,allow(设置黑名单)

Allow from

Deny from

              c5b26e57c691a598272453963fb1eaae.png-wh_

      示例:

1)    设置白名单;

6aa06a0fdd605d164e5d192cfbf7e5b9.png-wh_

2)    测试,在192.168.19.134主机上测试,不能访问了;

8b7f823b9f9e60e54871f7effd7b89b9.png-wh_

7.     定义默认主页面;

DirectoryIndex   index.html   index.html.var

c0eaed82f6a40a3c4af1384bd643d2c7.png-wh_

8.     定义路径别名;

格式:

  Alias /URL/  “/PATH/TO/SOMEDIR/”

 

DocumentRoot“/www/htdocs”

  http://www.magedu.ocm/download/bash-4.4.2-3.el6.x86_64.rpm

        /www/htdocs/download/bash-4.4.2-3.el6.x86_64.rpm

Alias/download/  “/rpms/pub/”

  http://www.magedu.com/download/bash-4.4.2-3.el6.x86_64.rpm

        /rpms/pub/bash-4.4.2-3.el6.x86_64.rpm

示例:

1)    编辑配置文件,定义别名;

2f89ebc08ead023cda29c771d2a8bcff.png-wh_

2)    创建相关文件及目录

860d84abea46153caa802bbaf323ad90.png-wh_

3)    测试;

d5766b4698f8e6dda02bcca671eb76dd.png-wh_

9.     设定默认字符集;

AddDefaultCharset    UTF-8

f15ae733ad2b00201d74299cca59f355.png-wh_

10.日志设定

日志类型:访问日志 和 错误日志

 

错误日志:

ErrorLog   logs/error_log

LogLevel   warn

  Possible values include: debug, info, notice,warn, error, crit, alert, emerg.

6158f974b915e320df063220730580cf.png-wh_

访问日志:

  LogFormat “%h %l %u %t ”%r”%>s  %b  ”%{Referer}i” ”%{User-Agent}i”” combined

  41f8ff6e3fcf4a9574514f36f41ef55f.png-wh_

  CustomLog logs/access_log  combined

  dcb05ed94f46b2c8e2ab822cafc90d15.png-wh_

  LogFormat  format  strings

        http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

 

        %h:客户端ip地址;

        %l:Remote User,通常为一个减号(“-”);

     %u:Remote user(fromauth;may be bogus if return status(%s)is 401);非为登录访问时,其为一个“-”号

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

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

%>s:响应状态码;

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

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

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

           示例:在192.168.19.134主机上访问192.168.19.128,在19.128主机上查看日志;

                 b7470d5208195e306e5a85a37854a395.png-wh_

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

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_33739627/article/details/91753230
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

  • 发表于 2020-02-13 14:57:10
  • 阅读 ( 1441 )
  • 分类:Linux