++++++++++http基本特性及配置

author author     2022-09-20     107

关键词:

ASF, 协议实现的软件程序, HTTPD特性

HTTP基本应用,客户端工具使用(telnet, elinks, curl)


ASF: Apache Software Foundation  Apache 软件基金会

FSF: Free Software Foundaton    自由软件基金会


ASF赖以起家的是: httpd<命名:apache>


http协议实现

技术分享


Http特性

模块化设计:DSO(Dynamic Share Object)

MPM机制(Multipurpose Process Modules) 多路处理模块

技术分享


HTTP安装

技术分享

httpd.i686       //The Apache HTTP Server is a powerful, efficient, and extensible
                //强大、高效、可扩展
/etc/httpd                           //家目录                  
/etc/httpd/conf.d                    //配置片段目录
/etc/httpd/conf/httpd.conf           //主配置
/etc/httpd/logs                      //日志目录
/etc/httpd/modules                   //模块目录
/etc/httpd/run                       //运行中的进程的数据
/etc/rc.d/init.d/httpd               //服务脚本
/etc/sysconfig/httpd                 //服务脚本配置

/usr/lib/httpd/modules
/usr/lib/httpd/modules/mod_actions.so     //DSO机制,动态共享对象
/usr/sbin/apachectl               //apachectl程序
/usr/sbin/httpd                   //MPM为IO,串行响应的进程
/usr/sbin/httpd.event             //MPM为复用I/O模型,并行响应的进程 <2.2的httpd,event不成熟>
/usr/sbin/httpd.worker            //MPM.............................
    //ps axu | fgrep httpd可查看
    
/usr/share/doc/httpd-2.2.15         //<DOCUMENTATION>
/usr/share/doc/httpd-2.2.15/ABOUT_APACHE
/usr/share/doc/httpd-2.2.15/CHANGES
/usr/share/doc/httpd-2.2.15/LICENSE
/usr/share/doc/httpd-2.2.15/NOTICE
/usr/share/doc/httpd-2.2.15/README
/usr/share/doc/httpd-2.2.15/VERSIONING

/usr/share/man/man8/apachectl.8.gz      //<MAN Document>
/usr/share/man/man8/htcacheclean.8.gz
/usr/share/man/man8/httpd.8.gz
/usr/share/man/man8/rotatelogs.8.gz
/usr/share/man/man8/suexec.8.gz

/var/cache/mod_proxy                   //<缓存目录>
/var/lib/dav                           //<程序运行中的数据>
/var/log/httpd                         //《日志目录》
/var/run/httpd                         //《运行中的httpd进程的数据》

/var/www/error/                //错误页面html网页存放目录
/var/www/html                  //DocuRoot目录,资源路径的根映射的位置


httpd配置文件

/etc/httpd/conf/httpd.conf 

//首次配置需要备份文件:
# cp -v /etc/httpd/conf/httpd.conf{,.bak}

配置文件格式

# fgrep ‘Section‘ /etc/httpd/conf/httpd.conf  
### Section 1: Global Environment   //全局环境:定义httpd通用功能特性
### Section 2: ‘Main‘ server configuration //主配置段:一个服务器提供单个站点
### Section 3: Virtual Hosts               //虚拟主机:一个服务器提供多个站点

配置指令格式

Directive(指令)    Value(值)
指令:不区分大小写
值:可能区分大小写


1、port

技术分享

使用示例

1、备份文件
# cp -v /etc/httpd/conf/httpd.conf{,.bak}

监听在不同端口
Listen 80
Listen 8080

2、重启
# service httpd restart
# ss -tnl 
State       Recv-Q Send-Q                                                               Local Address:Port                                                                 Peer Address:Port 
LISTEN      0      128                                                                             :::8080                                                                           :::*     
LISTEN      0      128                                                                             :::80                                                                             :::*


2、持久和非持久连接

技术分享//并发访问量过大场景,时间或数量限制过大时,可能会导致后续的请求被[拒绝服务],可以关闭或调整时间或数量限制


不同版本对应的特性

技术分享


httpd-2.0配置持久连接

KeepAlive Off         //持久连接功能

MaxKeepAliveRequests 100 // persistent connetion 内所允许的最大请求数量,<调高数字获取较大性能>

KeepAliveTimeout 15    //在TCP连接上等待请求的最大秒数


telnet协议客户端命令

技术分享

技术分享

使用示例

技术分享

连接即刻断开

技术分享

连接不会立即断开

技术分享


3、MPM 并发响应模型Multipath Process Module

10多种[适用在多种平台之上]
Linux: prefork, worker, event
编译时,一次只能编译单个模块


1)查看当前使用的模块

技术分享

2)查看装载的模块

技术分享

3)更换MPM

技术分享

复用IO,线程

启动瞬间:5个,1个僵尸
root      2494  1.0  1.4  11688  3560 ?        Ss   19:07   0:00 /usr/sbin/httpd.worker
apache    2496  0.0  0.0      0     0 ?        Z    19:07   0:00 [httpd.worker] <defunct>
apache    2497  0.0  1.1 289420  2964 ?        Sl   19:07   0:00 /usr/sbin/httpd.worker
apache    2498  0.0  1.1 289420  2960 ?        Sl   19:07   0:00 /usr/sbin/httpd.worker
apache    2499  0.0  1.1 289420  2960 ?        Sl   19:07   0:00 /usr/sbin/httpd.worker
apache    2528  0.0  1.1 289420  2960 ?        Sl   19:07   0:00 /usr/sbin/httpd.worker

过了几秒后,4个线程
root      2224  0.0  1.4  11688  3568 ?        Ss   19:06   0:00 /usr/sbin/httpd.worker
apache    2228  0.0  1.1 289420  2972 ?        Sl   19:06   0:00 /usr/sbin/httpd.worker
apache    2229  0.0  1.1 289420  2972 ?        Sl   19:06   0:00 /usr/sbin/httpd.worker
apache    2230  0.0  1.1 289420  2964 ?        Sl   19:06   0:00 /usr/sbin/httpd.worker

复用IO,线程
root      2644  0.2  1.4  11676  3548 ?        Ss   19:08   0:00 /usr/sbin/httpd.event
apache    2647  0.0  1.1 289408  2848 ?        Sl   19:08   0:00 /usr/sbin/httpd.event
apache    2648  0.0  1.1 289408  2852 ?        Sl   19:08   0:00 /usr/sbin/httpd.event
apache    2649  0.0  1.1 289408  2852 ?        Sl   19:08   0:00 /usr/sbin/httpd.event


4)MPM配置详解 /etc/httpd/conf/httpd.conf <网站的承载能力有一定影响>

# prefork MPM
# StartServers: 启动服务器后,预留的进程数
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: 服务器的生命周期内为MaxClients准备的最大值
# MaxClients:  最大并发数
# MaxRequestsPerChild: 每个进程最大响应请求数
<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

# worker MPM
# StartServers:  启动服务预留进程数
# MaxClients:    最大并发数
# MinSpareThreads: 最小并发数
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: 每个进程内的线程数
# MaxRequestsPerChild: 每个线程最多响应请求数
<IfModule worker.c>
StartServers         4
MaxClients         300
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25 
MaxRequestsPerChild  0 //0表示没有上限
</IfModule>

配置:影响网站的承载能力

PV承载量= (每秒请求资源数 * 86400 )/每个页面的资源数 //满载工作

考虑:全天满负荷运行?带宽使用大小?

带宽:每个PV消耗多少KB * PV承载量

技术分享

技术分享

使用示例

查看此模块已经被装载
# httpd -M | fgrep deflate_module
deflate_module (shared)

禁用 #LoadModule deflate_module modules/mod_deflate.so

重载 # service httpd reload

查看 
# httpd -M | fgrep deflate_module
Syntax OK


4、URL资源路径映射之一:DocRoot <资源路径的根映射为文件系统的哪个目录>

技术分享

使用示例:

默认配置

在配置文件中,定义DocumentRoot指令

DocumentRoot "/var/www/html"

给出默认主页

# cat > /var/www/html/index.html << EOF
<html>
  <head>
  <title>MageEdu</title>
  </head>
  <body>
    <h1>Hello</h1>
	<p> <a href="https://s5.51cto.com/wyfs02/M00/07/31/wKiom1nEuS7Tii_KAAA2TqP_0qY316.png">haha</p>
  </body>
</html>
EOF

重载配置文件

# httpd -t //先测试语法
# service httpd reload   //重载配置文件

在浏览器中访问时: 

技术分享


非默认配置


在配置文件中,定义DocumentRoot指令

DocumentRoot "/www/htdocs"

准备根映射路径

# install -d /www/htdocs
# echo ‘Test Page‘ > /www/htdocs/index.html

重载配置文件

# httpd -t
# service httpd reload

二次测试

技术分享


5、站点访问控制

技术分享



6、默认主页面

DirectoryIndex index.html index.html.var

自左向右,依次匹配给出目录下的文件,存在时,显示


7、文件系统路径访问控制

7、1基于来源地址

技术分享技术分享

技术分享


使用示例


Indexes<下载站使用>

1、允许索引
DocumentRoot "/www/htdocs"
<Directory "/var/www/html">
Options Indexes FollowSymLinks

# mv /etc/httpd/conf.d/welcome.conf{,.bak}
# mv /var/www/html/index.html{,.bak}

2、重载
# httpd -t
# service httpd reload

技术分享

2、允许索引
DocumentRoot "/www/htdocs"
<Directory "/www/htdocs">
Options Indexes FollowSymLinks

# httpd -t
# service httpd reload

技术分享

FollowSymlinks

1、允许跟踪
DocumentRoot "/www/htdocs"
<Directory "/www/htdocs">
Options Indexes FollowSymLinks

# ln -s / /www/htdocs/hello

技术分享

技术分享

2、不允许跟踪
DocumentRoot "/www/htdocs"
<Directory "/www/htdocs">
Options Indexes -FollowSymLinks

# httpd -t
# service httpd reload

技术分享


来源地址访问控制

配置
Order deny,allow
deny from 192.168.1.100

技术分享


7、2用户访问控制

安全域:认证后方能访问的目录,应该用名称标识

定义在/etc/httpd/conf/httpd.conf文件中

技术分享

技术分享

技术分享


1)基于用户认证

技术分享

2)基于组认证 

技术分享


使用示例

1、创建目录,使之能访问

# install -d /www/htdocs/admin
# echo "hello" > /www/htdocs/admin/index.html

2、添加配置

<Directory "/www/htdocs/admin">
    Options None
    AllowOverride None
    AuthType Basic
    AuthName "Administrator private"
    AuthUserFile "/etc/httpd/conf.d/.htpasswd"
    Require valid-user
</Directory>
# httpd -t
# service httpd reload
# htpasswd -c -m /etc/httpd/conf.d/.htpasswd tom
# htpasswd  -m /etc/httpd/conf.d/.htpasswd obama
# htpasswd  -m /etc/httpd/conf.d/.htpasswd obama

技术分享


3、添加组配置

<Directory "/www/htdocs/admin">
    Options None
    AllowOverride None
    AuthType Basic
    AuthName "Administrator private"
    AuthUserFile "/etc/httpd/conf.d/.htpasswd"
    AuthGroupFile "/etc/httpd/conf.d/.htgroup"
    Require group weblogic
</Directory>

# httpd -t
# service httpd reload


8、日志设定

错误日志

技术分享

1、日志为链接路径

技术分享


访问日志

技术分享

官方:httpd.apache.org http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#logformat
Documetation --> 2.2 --> 日志文件
192.168.206.1 - tom [18/Sep/2017:02:59:24 +0800] "GET /admin/ HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
%h 宏,替换为请求者IP 
%h remote host, 客户端IP
%l remote logname,登陆的用户名, mod_ident模块 为空时,用 " - " 表示 
%u remote user, 用户访问控制的basic, digst认证的用户名 为空时,用 " - " 表示 
%t Time the request was received (standard english format) 请求被服务器接收的时间
%r First line of request 请求报文的首行: telnet> GET / HTTP/1.1
%>s Status 响应状态码
%b  Size of response in bytes excluding[排除] HTTP headers

%{Referer}i  请求报文当中referer变量值,到达当前页面的入口
    " - " 网站有名
    "不为空时,网站的广告有效"
${User-Agent}i 请求报文中,usergent变量值:
    用户代理:发起请求的用到的进程< elink, ab, telnet, 浏览器, curl > 搜索引擎是爬虫爬出来的>


9、路径别名

技术分享


使用示例

DocumentRoot "/www/htdocs"
Alias /bbs "/forum/htdocs"
# mkdir -pv /forum/htdocs
# cat /forum/htdocs/index.html 
<html>
   <head> 
   <title>Test</title>
   </head> 
   <body>
     <h1></h1>
     <p> <a href="https://s5.51cto.com/wyfs02/M01/A5/E2/wKioL1nEuHezY3RsAABFaz2unFQ496.png">hello</a>
   </body>
</html>

访问: http://192.168.206.128/bbs/


10、字符集设定

技术分享


11、虚拟主机

虚拟主机的类型

技术分享

基于名称完成不同虚拟主机的识别

封装时: HTTP首部、TCP首部、IP首部、帧首部..

    Host: 浏览器键入的主机名 //"应用层首部"中附加,非通信子网

技术分享

配置前提

技术分享


虚拟主机配置格式

技术分享


1、基于IP,配置虚拟主机(不易记,IP需要购买)

#DocumentRoot "/www/htdocs"
<VirtualHost 192.168.206.128:80>
  ServerName web1.magedu.com
  DocumentRoot "/www/web1/htdocs"
</VirtualHost>
<VirtualHost 192.168.206.129:80>
  ServerName web2.magedu.com
  DocumentRoot "/www/web2/htdocs"
</VirtualHost>
# mkdir -pv /www/{web1,web2,web3,web4,web5,web6}/htdocs
# echo "web1.magedu.com" > /www/web1/htdocs/index.html
# echo "web2.magedu.com" > /www/web2/htdocs/index.html

# ip addr add 192.168.206.139/24 dev eth0

测试

# httpd -t
Syntax OK
# service httpd reload

登陆

技术分享

技术分享


2、基于端口,配置虚拟主机(用的少)

Listen 8080
Listen 8888
<VirtualHost 192.168.206.139:8080>
  ServerName web3.magedu.com
  DocumentRoot "/www/web3/htdocs"
</VirtualHost>
<VirtualHost 192.168.206.139:8888>
  ServerName web4.magedu.com
  DocumentRoot "/www/web4/htdocs"
</VirtualHost>

# echo "web3.magedu.com" > /www/web3/htdocs/index.html
# echo "web4.magedu.com" > /www/web4/htdocs/index.html

测试

# httpd -t 
# service httpd restart

登陆

技术分享


技术分享


3、基于Host,配置虚拟主机(在应用层封装Host首部即可)

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName web5.magedu.com
  DocumentRoot "/www/web5/htdocs"
</VirtualHost>
<VirtualHost *:80>
  ServerName web6.magedu.com
  DocumentRoot "/www/web6/htdocs"
</VirtualHost>

# echo "web5.magedu.com" > /www/web5/htdocs/index.html
# echo "web6.magedu.com" > /www/web6/htdocs/index.html

测试

# httpd -t
# service httpd reload

登陆

1、启动一个新的客户机
完成主机名到ip的映射
192.168.206.128 web1.magedu.com web2.magedu.com web3.magedu.com web5.magedu.com
2、测试
# yum -y install curl

# curl web5.magedu.com
web5.magedu.com
# curl web6.magedu.com
web6.magedu.com









本文出自 “Reading” 博客,请务必保留此出处http://sonlich.blog.51cto.com/12825953/1968229

security配置文件的基本配置及参数名详解

<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:security="http://www.springframework.org/schema/security"xmlns:xsi="http://www.w3.org/2001/X 查看详情

bash基本特性及linux基本命令

bash基本特性及linux基本命令1、命令历史      history         环境变量:            HI 查看详情

bash基本特性及linux基本命令

bash基本特性及linux基本命令1、命令历史      history         环境变量:            HI 查看详情

zookeeper基本讲解及基本命令和配置(转)

...y一个开源实现,是Hadoop和Hbase的重要组件,它提供了一项基本服务:分布式锁服务。由于ZooKeeper的开源特性,后来我们的开发者在分布式锁的基础上,摸索了出了其他的使用方法:配置维护、组服务、分布式消息队列、分布式通... 查看详情

函数基本语法及特性

我先复制了下面一段,挺有意思的。背景提要现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码123456789101112131415161718while... 查看详情

linux基础之bashshell介绍及基本特性

...内容是关于bashshell的。分享以下bashshell的相关知识,例如基本特性等。 1.8)bashshell的介绍1.8.1)什么是bashshell  概括地讲就是bashshell是一个命令解释器,与内核进行交互。  bashshell是一个命令解释器,它在操作系统的最... 查看详情

zookeeper基本讲解及使用

...的高可用、高性能且一致的开源协调服务,它提供了一项基本服务:分布式锁服务。由于ZK开源的特性,后来我们的开发者 查看详情

java的四个基本特性及相关问题

Java的四个基本特征1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。    抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。2)继承:继承是从已有类得到... 查看详情

http/3特性分析及未来发展

翻译、编辑:Alex技术审校:刘连响本文来自_SmashingMagazine_,原文链接:https://www.smashingmagazine.com/2021/08/http3-performance-improvements-part2/Robin讲HTTP/3#005#到现在为止,我们主要对比了QUIC和TCP中的性 查看详情

haproxy介绍及基本配置

一简介:1haproxy介绍HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAP... 查看详情

简要分析zookeeper基本原理及安装部署

一、ZooKeeper基本概念1、ZooKeeper是什么?Zookeeper官网地址:http://zookeeper.apache.org/Zookeeper官网文档地址:http://zookeeper.apache.org/doc/trunk/index.htmlZooKeeper是Hadoop下的一个子项目,它是一个针对大型分布式系统的可靠协调系统;它提供的... 查看详情

数据库事务特性及隔离级别

一、事务    事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。而这些逻辑工作单元需要具有原子性, 一致性,隔离... 查看详情

**httpd-2.4基础特性及ssl,访问控制,mpm[dso],status**

HTTP基本特性0.9 文本,method1.0 非持久,method, mime, 弱缓存1.1 持久2.0 mime,method, 引入spdy优势, 缓存加强2.4 较 2.2新特性:1、MPM非编译为核心:httpd-M查看2、event在2.4生产环境3、支持毫秒级别的保持连... 查看详情

(王道408考研数据结构)第一章绪论-第二节1:算法的基本概念算法的特性及设计要求

文章目录一:算法的基本概念(1)数据结构和算法的关系(2)算法(Algorithm)的定义二:算法的特性三:算法设计要求程序=数据结构+算法,前面我们已经探讨了什么数据结构,明白了如何用某种逻辑结构去描述数据之间的关系,... 查看详情

flink1.13新特性及改动

Flink1.13开始移除了sql-client-defaults.yml配置⽂件,所以在该配置⽂件配置catalog的⽅法就不存在了,目前相关配置添加到sql-init.sql文件即可。 查看详情

prometheus和node_exporter安装使用及基本配置

安装Prometheus之前我们必须先安装ntp时间同步(prometheus对系统时间的准确性要求很?,必须保证本机时间实时同步)以Centos7为例~]#timedatectlset-timezoneAsia/Shanghai~]#contab-e*****ntpdate-ucn.pool.ntp.org1)Prometheus下载?先我们去到http://prometheus.i... 查看详情

常用天线及对应特性

作者:桂。时间:2017-11-19  11:06:17链接:http://www.cnblogs.com/xingshansi/p/7859306.html     参考:《ElectronicWarfareandRadarSystemsEngineeringHandbook》2013. 查看详情

一个实验搞定华为hybrid-vlan基本配置及原理

实验拓扑:650)this.width=650;"width="744"height="430"src="http://s3.51cto.com/wyfs02/M02/53/CF/wKiom1RwhzGyMGLLAAFTb6oymDM690.jpg"alt="wKiom1RwhzGyMGLLAAFTb6oymDM690.jpg"/>2.  实验需求:PC1和PC3属于VLAN1 查看详情